0

この回答は、JSONObject の作成方法を示しているようです。

NSString *jsonString = @"[{\"id\": \"1\", \"name\":\"Aaa\"}, {\"id\": \"2\", \"name\":\"Bbb\"}]";
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError *e = nil;
NSMutableArray *json = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&e];
NSLog(@"%@", json);

出力は json オブジェクトのように見えます。しかし、私は次のことを試しました:

NSLog(@"%@", [NSJSONSerialization dataWithJSONObject:json options:NSJSONWritingPrettyPrinted error:nil ]);

返ってきたのは

<5b0a2020 7b0a2020 20202269 6422203a 20223122 2c0a2020 2020226e 616d6522 203a2022 41616122 0a20207d 2c0a2020 7b0a2020 20202269 6422203a 20223222 2c0a2020 2020226e 616d6522 203a2022 42626222 0a20207d 0a5d>

これは、実際の JSONObject ではないことを示しているようです。どうやって作るの?

4

1 に答える 1

3

それは本当の JSONObjectかもしれ"%@"ませんが、NSLog は生データを表示する方法を知りません... NSLog のビットは、NSData ではなく、エンコードされた NSString を必要とします。

物事がうまくいったかどうかを頭のてっぺんから見ることができる2つの方法があります。

#1)[isValidJSONObject:]メソッドを使用する

また

#2) 作成したばかりの JSON オブジェクトを再解析し、作成したとおりになるかどうかを確認します。次のようにして NSData を出力できます。

NSError * error = nil;
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:json options:NSJSONWritingPrettyPrinted error:&error ];
if(jsonData == nil)
{
    NSLog( @"error in parsing json data is %@", [error localizedDescription] );
} else {
    NSString * jsonString = [[NSString alloc] initWithData: jsonData encoding: NSUTF8StringEncoding];    
    NSLog( "json data is %@", jsonString );
}
于 2012-04-04T01:17:51.263 に答える