-1

我正在我的 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 提要的一部分是:

"full":"San Francisco, CA"

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

谢谢,丹

4

3 回答 3

1

第一个结果不是 type 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"];
于 2013-05-14T13:43:23.917 回答
1

你需要

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

因为它是一个嵌套的 JSON。

于 2013-05-14T13:51:29.623 回答
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];

试试这个它可能会帮助你。

于 2013-05-14T13:57:28.047 回答