使用 JSONKit 在 iOS 中解析 JSON 数组 - 没有 ObjectForKey 标记的数组?

Posted

技术标签:

【中文标题】使用 JSONKit 在 iOS 中解析 JSON 数组 - 没有 ObjectForKey 标记的数组?【英文标题】:Parsing JSON Array in iOS with JSONKit - array with no tag for ObjectForKey? 【发布时间】:2011-12-12 00:16:56 【问题描述】:

我正在尝试解析由 RESTful Web API 返回的 JSON 数组,该数组看起来类似于以下内容(使用 JSONKit):

[  "DateCreated" : "/Date(1320296400000)/",
    "ID" : 1,
    "Summary" : "Summary 1",
    "Title" : "Title 1",
    "URL" : "URL 1"
  ,
   "DateCreated" : "/Date(1320296400000)/",
    "ID" : 2,
    "Summary" : "Summary 2",
    "Title" : "Title 2",
    "URL" : "URL 2"
  
]

我过去使用的 JSON 通常有一个父元素,例如 news:node1,node2,这将允许我从 JSON 响应中提取该节点,如下所示:

NSString *response = [request responseString];
NSDictionary *deserializedData = [response objectFromJSONString];
NSArray *arrNews = [deserializedData objectForKey:@"news"];

在我的 JSON 中,不存在这样的节点,它只是一个原始数组。我该如何将它拉入 NSArray(或者我可以挂接到 UITableView 中的东西)?

【问题讨论】:

【参考方案1】:

从您的 JSON 数据的外观来看,您的 deserializedData 应该已经是一个 JKArray 填充了 JKDictionary 对象。

你试过像数组一样访问它吗?

for (NSDictionary * dataDict in deserializedData) 
    NSString * timeStamp = [dataDict objectForKey:@"DateCreated"];
    // and so on

这应该让您遍历 JSON 数据中的每个元素。

【讨论】:

那你怎么知道他感兴趣的是数组元素0? 我更新了我的答案,因此没有访问特定索引,避免了 0 混淆。【参考方案2】:

一个合法的 JSON 字符串可以有一个数组或字典/“对象”作为其外部“容器”。您的示例中的 JSON 有一个数组作为外部“容器”。完全合法。

如果您不知道会发生什么,您必须测试对象以查看它是什么。

【讨论】:

以上是关于使用 JSONKit 在 iOS 中解析 JSON 数组 - 没有 ObjectForKey 标记的数组?的主要内容,如果未能解决你的问题,请参考以下文章

JSONKit 无法从 php 解析简单的 JSON?

iOS中JSON解析和XML解析的区别

iOS JSONKit objectWithData 返回 null

适用于 iPhone 应用程序的 JSONKit?

使用 JSONKit 解析 JSON 文件

将对象添加到 JSONKit 创建的字典?