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 中的位需要一个带有编码的 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 );
}
于 2012-04-04T01:17:51.263 回答