2012-04-04 28 views
0

This answer似乎展示了如何制作JSONObject。在iOS5中创建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>

这似乎表明它不是一个真正的JSONObj等。你如何制作一个?

回答

3

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

有两种方法可以看到我的头顶,以确定事情是否奏效。

#1)使用[isValidJSONObject:]方法

#2)重新解析您刚刚创建的JSON对象,看看它出来你创建它的方式。

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); 
} 
+0

如果我有NSString的的一个NSArray,我将如何整个数组分配给一个键,然后把它转换成一个JSONObject:你可以做类似打印出NSData的? – neuromancer 2012-04-04 01:27:09

+0

JSONObject只是一个NSArray? – neuromancer 2012-04-04 01:32:16

+0

您可以通过NSJSONSerialization'从数据或流(但不是数组或字典)创建JSON对象。你需要将一个数组转换为'NSData'来完成JSON转换。看看[在这个相关的问题,你可能会找到你要找的答案](http://stackoverflow.com/questions/8356842/how-to-use-nsjsonserialization)。 – 2012-04-04 01:33:08

相关问题