在iOS5中创建JSONObject

时间:2012-04-04 01:12:17

标签: string json ios5 nsstring nsobject

This answer似乎展示了如何制作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。你怎么做的?

1 个答案:

答案 0 :(得分:3)

可能是一个真正的JSONObject,但是NSLog不知道如何显示原始数据...... NSLog中的"%@"位想要一个带有编码的NSString,而不是NSData。

我可以通过两种方式从头脑中看出事情是否成功。

#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 );
}