当前位置: 首页 > 面试题库 >

将JSON数组解析为NSDictionary

郑博
2023-03-14
问题内容

我正在使用Weather Underground API制作应用程序,但在解析与严重警报有关的代码块时遇到了麻烦。JSON使用具有子键值对的键值对-
这对我来说不是问题,因为我可以从中选出后续的NSDictionary-但严重警报的条目被证明是有问题的。见下文:

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

因此,最终结果将是一个字符串,上面写着“部分多云”或类似的内容,以及许多我未显示的相关天气值。它们成功解析,因为它们仅具有范围括号{},而没有[]括号。


问题答案:

方括号表示数组中存在Json数据。您可以将其解析如下

NSArray *alertArray = [json objectForKey:@"alerts"];

现在您应该遍历所有警报并对其进行解析(在您的情况下,它仅为1,但在另一个json字符串中可能更多):

//parse each alert
for (NSDictionary *alert in alertArray ){
     NSString* description = [alert  objectForKey:@"description"];
    //etc...
}


 类似资料:
  • 我正在尝试使用jQuery将此对象转换为数组 我试图得到这样的数组输出: 怎样?

  • 问题内容: 我正在尝试使用mapper进行解析以将大JSON解析为java对象。我有一个很大的JSON,但遇到了其中的这一小片段,不确定如何解析。 这是JSON,其格式看起来几乎没有什么不同。我试图了解如何将其解析为对象。 我不知道它采用哪种格式,以及如何将其解析为对象。 问题答案: 这取决于你的身材有多大。如果可以将其加载到内存,则可以使用最简单的方法: 解决方案1: POJO类: 用法: 上面

  • 我有一个,名为,内容如下: 做这件事最简单的方法是什么?

  • 问题内容: 我正在尝试解析一个包含JSON数据的文件: 由于这是带有动态键的JSON数组,因此我认为我可以使用: 但是,我无法使用来解析文件: 将包含JSON数据的文件解析为Go结构的最简单方法是将数组(仅字符串类型转换为字符串类型)? 编辑: 要进一步详细说明可接受的答案-的确,我的JSON是地图数组。为了使我的代码正常工作,该文件应包含: 然后可以将其读入 问题答案: 这是因为您的json实际

  • 问题内容: 我有一个名为包含以下内容: 我知道我可以用以下方法获得阵列: 现在我想将其解析为… 最简单的方法是什么? 问题答案: 绝对最简单的方法是使用Gson的默认解析功能。 此功能的实现适用于需要反序列化为任何(例如any )的情况。 在您的情况下,您只需要获取的,然后将JSON数组解析为that ,如下所示: 在您的情况下是a ,但也可能是a ,any 或a 。 您可能需要看一下Gson A

  • 问题内容: 我正在尝试解析如下的JSON 到[[“ Jack”,“ Jones”,“ Rock”,“ Taylor”,“ Rob”],[“ Rose”,“ John”],[“ Ted”]]的数组 这是数组的数组。 我尝试了下面的代码 当我打印“人”时,我得到o / p为 我很困惑当“人物”重复3次时如何解析 尝试在UITableView中显示内容,其中第一个单元格具有“ Jack” ..“ Rob