1

我正在尝试制作一个天气应用程序,我在网上找到了一个很棒的 JSON 天气 API。我在用

NSData * data = [NSData dataWithContentsOfURL: [NSURL URLWithString: absoluteURL]];
NSError * error;
NSDictionary * json = [NSJSONSerialization JSONObjectWithData: data //1
  options: kNilOptions 
  error: & error
];
NSLog(@"%@", json);
NSLog([NSString stringWithFormat: @"location: %@", [json objectForKey: @"status"]]);

获取数据,但它不会工作,日志返回(null)。有人可以向我解释如何获取 JSON 文件的字符串和值吗?谢谢!

4

2 回答 2

2

编辑:将您的代码从第 3 行(包括)更改为:

NSDictionary * json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
NSArray *meta = json[@"objects"];

for (NSDictionary *aDict in meta) {
    NSDictionary *location = aDict[@"location"];
    NSLog(@"%@", location);
}

NSLog()是您的JSON response.

如果你想要city并且country只有一次,你可以执行以下操作:

NSDictionary *location = json[@"objects"][0][@"location"];
NSString *country = location[@"country"];
NSString *locality = location[@"locality"];

NSLog(@"country: %@", country);
NSLog(@"locality: %@", locality);

输出:

国家:德国
地点:豪森贝格

于 2013-04-25T16:51:23.430 回答
0

JSON 的根目录中没有元素“状态”。json 对象将包含与 JSON 完全相同的层次结构。在你的情况下,它看起来像这样:

root (dictionary)
  |
  -- "objects": (array)
        |
        -- (dictionary)
              |
              -- "sources" (array) 
              -- "weather" (dictionary)
...

你明白了。

尝试这个:

for (NSDictionary *object in json[@"objects"])
{
    NSLog([NSString stringWithFormat: @"location: %@", object[@"weather"][@"status"]]);
}
于 2013-04-25T17:04:14.950 回答