经过测试后,我只能[NSJSONSerialization isValidJSONObject:]对已经解析过的JSON数据返回一个肯定值[NSJSONSerialization JSONObjectWithData:options:error:]。
[NSJSONSerialization isValidJSONObject:]
[NSJSONSerialization JSONObjectWithData:options:error:]
根据官方文件:
isValidJSONObject返回一个布尔值,该布尔值指示是否可以将给定对象转换为JSON数据。
但是,尽管事实是我尝试将其从JSON转换为NSDictionary的对象都可以正常转换,但仍会isValidJSONObject返回NO。
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。
data
我怎样才能isValidJSONObject按预期工作?
isValidJSONObject测试 JSON对象 (a NSDictionary或NSArray)是否可以成功转换为 JSON数据 。
NSDictionary
NSArray
它不是用于测试NSData对象是否包含有效的 JSON数据 。要测试有效的JSON数据,您只需调用
NSData
[NSJSONSerialization JSONObjectWithData:data ...]
并检查返回值是否为nil。
nil