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

解析 JSON 响应时出错 Cocoa 错误 3840

NSJsonSerialzation 未解析来自 Facebook 的结果 - Cocoa 错误 3840 [重复]

在 iOS 应用程序中获取和解析 JSON 的最佳方法? [关闭]

JSON 解析错误:Error Domain=NSCocoaErrorDomain Code=3840 “操作无法完成。(Cocoa 错误 3840。)

在 iOS 中解析 json 并将值添加到对象数组

json三层解析(数组解析)