我正在编写一个应用程序,它应该从远程Web服务读取JSON数据。 URL的格式为“something.action”。
我使用dataWithContentsofURL从服务下载JSOn数据,我看到这个函数确实返回了一些数据。
使用这些数据我调用函数NSJSONSeraiization,但是它的响应是null。
基本上,我使用http://www.raywenderlich.com/5492/working-with-json-in-ios-5上提供的代码。唯一的区别是我从远程服务器获取数据,而我的URL的格式为“something.action”。
我无法弄清楚这里出了什么问题。
答案 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....