16

を配列形式NSArrayでサーバーに送信する必要があります。JSONどうすればに変換できますかJSONNSArrayこれは私が合格しなければならない私のサンプルです。

array([0] => array('latitude'=>'10.010490', 
                  'longitude'=>'76.360779', 
                   'altitude'=>'30.833334', 
                  'timestamp'=>'11:17:23', 
                      'speed'=>'0.00', 
                   'distance'=>'0.00');

[1] => array('latitude'=>'10.010688', 
            'longitude'=>'76.361378', 
             'altitude'=>'28.546305', 
            'timestamp'=>'11:19:26', 
                'speed'=>'1.614', 
             'distance'=>'198.525711')
 )`

必要な形式は次のとおりです

[
  { "latitude":"10.010490",
   "longitude":"76.360779",
    "altitude":"30.833334",
   "timestamp":"11:17:23", 
       "speed":"0.00",
    "distance":"0.00"
  },    
  {
   "latitude":"10.010688",
  "longitude":"76.361378",
   "altitude":"28.546305",
  "timestamp":"11:19:26",
      "speed":"1.614",
   "distance":"198.525711" 
  }
]

誰かが解決策を持っていますか?前もって感謝します。

4

8 に答える 8

51
NSDictionary *firstJsonDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
                            @"10.010490", @"latitude",
                            @"76.360779", @"longitude",
                            @"30.833334", @"altitude",
                            @"11:17:23", @"timestamp",
                            @"0.00", @"speed",
                            @"0.00", @"distance",
                            nil];

  NSDictionary *secondJsonDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
                            @"10.010490", @"latitude",
                            @"76.360779", @"longitude",
                            @"30.833334", @"altitude",
                            @"11:17:23", @"timestamp",
                            @"0.00", @"speed",
                            @"0.00", @"distance",
                            nil];

NSMutableArray * arr = [[NSMutableArray alloc] init];

[arr addObject:firstJsonDictionary];
[arr addObject:secondJsonDictionary];

NSData *jsonData2 = [NSJSONSerialization dataWithJSONObject:arr options:NSJSONWritingPrettyPrinted error:&error];
NSString *jsonString = [[NSString alloc] initWithData:jsonData2 encoding:NSUTF8StringEncoding];
NSLog(@"jsonData as string:\n%@", jsonString);
于 2012-09-06T13:13:03.030 に答える
5

最もシンプルで最良のアプローチ!!!

NSArrayまたはNSMutableArrayをjsonStringに変換するには、最初にNSDataに変換してから、さらにNSStringに変換します。このコードを使用する

NSData* data = [ NSJSONSerialization dataWithJSONObject:yourArray options:NSJSONWritingPrettyPrinted error:nil ];
NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

それは私を助け、あなたにも役立つことを願っています。ではごきげんよう。

于 2016-06-01T14:08:58.583 に答える
4

SBJson-Frameworkをお勧めします。

の変換NSMutableArrayは簡単ですNSString *jsonString = [yourArray JSONRepresentation];

編集:Jack Farnandishは正しいです。Jsonに変換する前に、NSDictionaryに変換する必要があります。私の例では、NSMutableArrayにディクショナリが含まれている必要があります。配列は、文字列の最初と最後に角かっこを作成するためにのみ必要です。

于 2012-09-06T12:26:37.200 に答える
2

iOSのビルドインJSON関数を使用するか、 JSONKitなどの外部ライブラリを使用してデータをJSONに変換できます

于 2012-09-06T12:23:50.557 に答える
2

NSDictionaryまず、構造をクラスとオブジェクトをNSArray含むものに変更する必要がありNSDictionaryます。次に、iOS5でJSONKitを試してください。シリアル化は標準よりもうまく機能しますNSJSONSerialization

于 2012-09-06T12:29:38.170 に答える
2
#import <JSONKit/JSON.h>

NSArray *array = // Your array here.
NSString *json = [array JSONString];

NSLog(@"%@", json);

JSONKitは、私自身および作成者のベンチマークにおいて、SBJsonや他の製品よりも大幅に優れたパフォーマンスを発揮します。

于 2012-09-06T12:48:24.273 に答える
2

このチュートリアルを確認してください。iOS5.0のJSONが明確に説明されています(serailization、deserailization)。

于 2012-09-07T09:54:14.273 に答える
1

呼び出しているサービスはRESTfulサービスですか?

その場合は、RestKitを使用することを強くお勧めします。オブジェクトのシリアル化/逆シリアル化を行います。また、すべてのネットワーク基盤を処理します。非常に価値があり、手入れが行き届いています。

于 2012-09-06T13:55:14.577 に答える