isValidJSONObject无法按预期工作

时间:2013-06-17 14:21:22

标签: objective-c json cocoa-touch

经过测试,我只能得到[NSJSONSerialization isValidJSONObject:]来回复我已使用[NSJSONSerialization JSONObjectWithData:options:error:]解析过的JSON数据。

根据official documentation

  

isValidJSONObject返回一个布尔值,指示给定对象是否可以   转换为JSON数据。

然而,尽管我试图从JSON转换为NSDictionary的对象转换为正常,isValidJSONObject返回NO

这是我的代码:

NSURL * url=[NSURL URLWithString:urlString];
NSData * data=[NSData dataWithContentsOfURL:url];
NSError * error=[[NSError alloc] init];
NSMutableDictionary * dict=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];

if([NSJSONSerialization isValidJSONObject:data]){
    NSLog(@"data is JSON");
}else{
    NSLog(@"data is not JSON");
}

if([NSJSONSerialization isValidJSONObject:dict]){
    NSLog(@"dict is JSON");
}else{
    NSLog(@"dict is not JSON");
}

NSLog(@"%@",dict);

我的日志包含以下内容:

data is not JSON
dict is JSON

然后输出dict,此时这是一个巨大的NSMutableDictionary对象。运行此代码时不会生成任何错误,但在isValidJSONObject上运行时,data似乎返回了错误的值。

如何让isValidJSONObject按预期工作?

1 个答案:

答案 0 :(得分:25)

isValidJSONObject测试 JSON对象NSDictionaryNSArray)是否可以成功 转换为 JSON数据

它不用于测试NSData对象是否包含有效的 JSON数据。测试有效 您刚才调用的JSON数据

[NSJSONSerialization JSONObjectWithData:data ...]

并检查返回值是否为nil