Cocoa iOS 解析 JSON 数组
Posted
技术标签:
【中文标题】Cocoa iOS 解析 JSON 数组【英文标题】:Cocoa iOS Parsing JSON Array 【发布时间】:2016-05-24 20:21:57 【问题描述】:我是 ios 编码的新手,目前正在尝试修改一些 aJax 代码,以便可以通过以下代码正确解析 JSON 数组结果集。
JSON 返回字符串
"employees": [
"firstName": "John",
"lastName": "Doe"
,
"firstName": "Anna",
"lastName": "Smith"
,
"firstName": "Peter",
"lastName": "Jones"
]
原创教程
https://spring.io/guides/gs/consuming-rest-ios/
iOS 代码
if (data.length > 0 && connectionError == nil)
NSDictionary *greeting = [NSJSONSerialization JSONObjectWithData:data
options:0
error:NULL];
//self.greetingId.text = [[greeting objectForKey:@"id"] stringValue];
//self.greetingContent.text = [greeting objectForKey:@"content"];
self.greetingId.text = [[greeting objectForKey:@"employees"] stringValue];
self.greetingContent.text = [greeting objectForKey:@"firstName"];
];
提前致谢!
【问题讨论】:
虽然从问题中不清楚实际问题是什么,但这里有一些在这个 sn-p 中发现的问题:1)objectForKey:@"employees"
将返回一个 NSArray
所以我猜 stringValue
并不是您真正想要的 2) greeting
字典中的 objectForKey:@"firstName"
(请记住,这是您的根对象)将返回 nil
。我希望这是有道理的,并引导您朝着正确的方向前进:)
【参考方案1】:
您的“员工”是一个数组,其中包含多个名字和姓氏字典 init,因此您在代码中尝试的内容是错误的。
您需要使用员工对象键创建一个数组。这将为您提供多个字典,并且要访问这些字典,您可以使用 for 循环并将键分配给字符串。
NSArray *employeesArray = [greeting objectForKey:@"employees"];
for (NSDictionray *dict in employeesArray)
NSString *firstname = [[dict objectForKey:@"firstName"] stringValue];
NSString *lastName = [[dict objectForKey:@"lastName"] stringValue];
// do something with names
【讨论】:
我加了解释 像下面的 pastebin 甚至不确定如何处理文本...想打印出名称... -> pastebin.com/yv92v0RT 是的,但是您没有对该代码中的名称做任何事情,您在问题中发布的那个 json 示例中不止一个名字和姓氏,而且您的问题不完整。你想达到什么目标,你遇到了什么错误等等...... 我想使用我发布的示例并通过 json 数组进行解析,但也许我需要一个更简单的教程,我缺少的第一段 Objective-c 代码,用于在 php 中编码, JSON 等...你知道比我发布的更简单的教程吗? 这看起来很简单,但我假设 json 字符串是不同的,就像说你的 json 有一个包含多个字典的雇员数组一样,因为我的代码应该可以工作。以上是关于Cocoa iOS 解析 JSON 数组的主要内容,如果未能解决你的问题,请参考以下文章
NSJsonSerialzation 未解析来自 Facebook 的结果 - Cocoa 错误 3840 [重复]
在 iOS 应用程序中获取和解析 JSON 的最佳方法? [关闭]
JSON 解析错误:Error Domain=NSCocoaErrorDomain Code=3840 “操作无法完成。(Cocoa 错误 3840。)