经过测试后,我只能得到[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对象。运行此代码时不会产生任何错误,但是isValidJSONObjectdata上运行时似乎返回错误的值。

如何使isValidJSONObject正常工作?

最佳答案

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

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

[NSJSONSerialization JSONObjectWithData:data ...]


并检查返回值是否为nil

09-06 15:30