9

测试后,我只能[NSJSONSerialization isValidJSONObject:]对我已经解析过的 JSON 数据返回一个肯定的结果[NSJSONSerialization JSONObjectWithData:options:error:]

根据官方文档

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按预期工作?

4

1 回答 1

26

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

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

[NSJSONSerialization JSONObjectWithData:data ...]

并检查返回值是否nil

于 2013-06-17T14:33:32.143 回答