iOS从JSON提要返回“null”数据

时间:2013-05-14 13:36:05

标签: objective-c json parsing null

我正在iOS应用程序中下载并解析JSON提要。 JSON提要提供的数据的某些部分在我的iOS应用程序中正确显示,但是JSON提要的某些部分似乎返回“null”,即使在实际的JSON提要本身中,它们也不包含数据“null”。

这是我的代码:

NSError *myError = nil;
NSDictionary *res = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableLeaves  error:&myError];
NSArray *results = [res objectForKey:@"current_observation"];
NSArray *cur = [results valueForKey:@"weather"];
NSArray *loc = [results valueForKey:@"full"];
NSArray *tmp = [results valueForKey:tmptype];

我想加载的JSON提要是这样的: http://api.wunderground.com/api/595007cb79ada1b1/conditions/q/CA/San_Francisco.json

返回“null”的JSON Feed的一部分是:

"full":"San Francisco, CA"

以上返回“null”....为什么?我该如何解决这个问题?

谢谢,Dan

3 个答案:

答案 0 :(得分:1)

第一个结果不是NSArray类型。

当您尝试获取密钥的值时:full您的路径不正确。 您位于current_observation.full,但您想要的密钥位于current_observation.display_location.full。由于JSON是嵌套的,因此您需要进入正确的路径。

您可以一次性获得完整路径:

NSError *myError = nil;
NSDictionary *res = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableLeaves error:&myError];
NSString *weather = [res valueForKeyPath:@"current_observation.weather"];
NSString *cur = [res valueForKeyPath:@"current_observation.display_location.full"];

答案 1 :(得分:1)

你需要

NSString *full= [[results valueForKey:@"display_location"] valueForKey:@"full"]];

因为它是嵌套的JSON。

答案 2 :(得分:0)

NSError *myError = nil;
NSDictionary *res = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableLeaves  error:&myError];
NSArray *results = [res objectForKey:@"current_observation"];
NSArray *cur = [results valueForKey:@"weather"];
NSString *full= [[res valueForKey:@"display_location"] valueForKey:@"full"]];
NSArray *tmp = [results valueForKey:tmptype];

试试这可能对你有所帮助。