NSJSONSerialization返回null

时间:2012-09-14 10:24:30

标签: ios json nsjsonserialization

我正在编写一个应用程序,它应该从远程Web服务读取JSON数据。 URL的格式为“something.action”。

我使用dataWithContentsofURL从服务下载JSOn数据,我看到这个函数确实返回了一些数据。

使用这些数据我调用函数NSJSONSeraiization,但是它的响应是null。

基本上,我使用http://www.raywenderlich.com/5492/working-with-json-in-ios-5上提供的代码。唯一的区别是我从远程服务器获取数据,而我的URL的格式为“something.action”。

我无法弄清楚这里出了什么问题。

2 个答案:

答案 0 :(得分:1)

检查http://jsonviewer.stack.hu/之类的JSON查看器,以确认返回的JSON是否正确。

从您收到的NSData获取字符串的NSLog,并将其与查看器一起使用。如果有任何问题,您就知道该对象未被序列化的原因。

答案 1 :(得分:0)

检查您获得的响应是​​格式正确的JSON文件,如果检查其类:

NSError *jsonError = nil;
NSJSONSerialization *myJSONObject = [NSJSONSerialization JSONObjectWithData:theNSDataObained options:NSJSONReadingMutableContainers error:&jsonError];

if(jsonError != nil){
    NSLog(@"JSON Error: %@", jsonError);
    return;
}

//An NSJSONSerialization object will either be an NSDictionary or 
//an NSArray, figure out what it is: 

NSLog(@"JSON class is: %@", [myJSONObject class]);

//if it's a NSDictionary:
if([myJSONObject isKindOfClass:[NSDictionary class]]){
    NSDictionary *myJSONDictionary = (NSDictionary *) myJSONObject;
    for(id key in myJSONDictionary){
        id value = [myJSONDictionary valueForKey:key];
        [value doStuff];
    }
} 
else //if it's a NSArray....