使用 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 标记的数组?的主要内容,如果未能解决你的问题,请参考以下文章