经过测试,我只能[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);
Run Code Online (Sandbox Code Playgroud)
我的日志包含以下内容:
data is not JSON
dict is JSON
Run Code Online (Sandbox Code Playgroud)
然后是dict的输出,在这一点上是一个巨大的NSMutableDictionary对象.运行此代码时不会生成错误,但在运行时isValidJSONObject似乎返回了错误的值data.
我怎样才能isValidJSONObject按预期工作?
let data = NSData(contentsOfFile: "myfile")
let jsonString = NSString(data: data, encoding: NSUTF8StringEncoding)
let jsonData: NSData! = jsonString.dataUsingEncoding(NSUTF8StringEncoding)!
var validJson = false
if (NSJSONSerialization.JSONObjectWithData(jsonData, options: nil, error: &error) != nil) {
validJson = true
}
Run Code Online (Sandbox Code Playgroud)
我希望上面的代码只validJson在jsonData的内容实际上是有效的JSON时设置为true.此时如果我抽什么成可以在代码中看到了"MYFILE"文件的那一刻,validJson是永远正确的.
我怎样才能解决这个问题,validJson只有当它实际上是有效的JSON时才会这样?