我正在使用 Weather Underground API 来制作应用程序,但在解析与严重警报相关的块时遇到了障碍。JSON 使用具有子键值对的键值对——这对我来说不是问题,因为我可以从中制作后续的 NSDictionaries——但严重警报的条目已被证明是有问题的。见下文:
"alerts": [
{
"type": "WAT",
"description": "Flash Flood Watch",
"date": "3:13 PM EDT on April 28, 2012",
"date_epoch": "1335640380",
"expires": "8:00 AM EDT on April 29, 2012",
"expires_epoch": "1335700800",
"message": "\u000A...Flash Flood Watch in effect through Sunday morning...\u000A\u000AThe National Weather Service in Charleston has issued a\u000A\u000A* Flash Flood Watch for portions of northeast Kentucky... (Note: I trimmed this for length's sake),
"phenomena": "FF",
"significance": "A"
}
]
“警报”对与我能够解析的其他对不同,因为它在子值周围有这个[] 括号,我不知道如何清除它,以便我可以访问子值。在我能够解析的其他示例中,它只有{ } 括号,而不是 { } 和 [ ] 括号。作为参考,括号始终存在——即使没有恶劣天气警报……在这种情况下,“警报”对返回括号 [],不存在子对。
有没有办法可以从 NSDictionary 中删除 [ ] 括号,或者忽略它们?任何意见,将不胜感激!
对于参考和故障排除帮助,以下是我成功解析 JSON 文档其余部分的方法:
1) 从原始 JSON 创建一个 NSDictionary
//Process Weather Call
NSError* error;
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
2) 为嵌套的 json 对创建后续字典
NSDictionary *current_observation = [json objectForKey:@"current_observation"];
3) 赋值
NSString* weather;
weather = [current_observation objectForKey:@"weather"];
所以最终结果将是一个字符串,上面写着“部分多云”或其他内容,以及许多我没有显示的相关天气值。这些解析成功,因为它们只有范围括号 {},而不是 [] 括号。