Objective c iOS返回“;空";来自JSON提要的数据

Objective c iOS返回“;空";来自JSON提要的数据,objective-c,json,parsing,null,Objective C,Json,Parsing,Null,我正在iOS应用程序中下载并解析JSON提要。JSON提要提供的数据的某些部分在我的iOS应用程序中显示正确,但是JSON提要的某些部分似乎返回“null”,即使在实际的JSON提要本身中,它们不包含数据“null” 这是我的密码: NSError *myError = nil; NSDictionary *res = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableLeaves

我正在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提要如下:

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

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


谢谢,Dan

第一个结果不是NSArray类型的

尝试获取键的值时:
full
路径不正确。 您处于
current\u observation.full
中,但您需要的键位于
current\u observation.display\u 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"];
你需要

NSString *full= [[results valueForKey:@"display_location"] valueForKey:@"full"]];
因为它是一个嵌套的JSON

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];

试试这个,它可能会对您有所帮助。

“上面的返回值为“null”-上面的是一个键值对。在什么意义上它可以“返回null”(不管这意味着什么)?对不起,我的解释很糟糕,我的意思是,当我试图通过iOS应用程序访问“full”包含的数据时,我的应用程序返回(显示)字符串“null”而不是“San Francisco,CA”。您如何访问数据?如何显示它?您是否在显示值(如任何类型的格式)之前执行逻辑?无格式,我只是获取数据并将其传递到UILabel以显示在屏幕上。谢谢,谢谢,谢谢!!!!!!是的,我对JSON非常陌生,所以谢谢你,现在我了解了如何使用嵌套JSON数据。工作非常出色,帮助解决了我在使用嵌套JSON时遇到的所有其他JSON问题:关于索引下标表示法呢<代码>NSString*full=结果[@“显示位置”][@“完整”]更短,更易于眼睛观看,获得完全相同的效果。
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];