经过测试后,我只能得到[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
正常工作? 最佳答案
isValidJSONObject
测试JSON对象(NSDictionary
或NSArray
)是否可以成功
转换为JSON数据。
它不是用于测试NSData
对象是否包含有效的JSON数据。测试是否有效
您刚刚调用的JSON数据
[NSJSONSerialization JSONObjectWithData:data ...]
并检查返回值是否为
nil
。