1

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

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

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

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

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

4

2 回答 2

1

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

对从您收到的 NSData 获得的字符串进行 NSLog 处理,并将其与查看器一起使用。如果有任何问题,您就会知道为什么该对象没有被序列化。

于 2012-09-14T13:21:24.027 回答
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....
于 2012-09-14T14:02:47.437 回答