如何从iphone中的json数组中获取对象?

Posted

技术标签:

【中文标题】如何从iphone中的json数组中获取对象?【英文标题】:how to get objects from a json array in iphone? 【发布时间】:2011-10-31 19:56:12 【问题描述】:

我正在开发一个涉及使用 json-framework 的 iPhone 应用程序。我正在使用 NSURL 获取数组

["firstName":"X","lastName":"Y","id":1,"firstName":"A","lastName":"B","id":2]

如果我查询 id=1,我怎样才能得到这 2 个对象,O/P 是

id=1
firstName:X
lastName:Y

然后把它放在一张桌子上。 我在谷歌上搜索了很多天的东西,但没有得到任何解决方案。 请帮帮我,感谢通过代码解释。

谢谢。

【问题讨论】:

这里有一大堆解决方案:***.com/questions/286087/… 【参考方案1】:

如果你的目标SDK是ios4或更高版本,你可以使用这个项目

https://github.com/stig/json-framework/

将源代码添加到项目后,只需

#import "SBJson.h"

并按如下方式转换您的 Json 字符串

jsonResponse = [string JSONValue];

如果您的字符串中没有完整的 Json 数组,该方法将失败,但您可以继续追加字符串,直到它不失败

在下面跟进 codejunkie 的请求 您可以在您的数据结构中假设jsonResponseNSArray 在其他实现中注意测试 NSArray 或 NSDictionary 的响应

NSArray * myPeople = [string JSONValue]; 
NSMutableDictionary * organizedData = [[NSMutableDictionary alloc] init];
for (NSDictionary * p in myPeople) 
    [organizedData setValue:p forKey:[p valueForKey:@"id"]];

    // now you can query for an id like so
    // [organizedData valueForKey:@"1"]; and your output will be what you wanted from the original question
    // just don't forget to release organizedData when you are done with it

【讨论】:

您好,感谢您的回复。我已经做到了,但是现在问题是当我将类文件夹放在项目的框架文件夹中时出现错误。 您好,感谢您的回复。我已经做到了,但是现在问题是当我将类文件夹放在项目的框架文件夹中时出现错误。它在流解析器文件中给出了几个错误。 嘿,没问题。什么样的错误?有几个不同的版本,我建议从 V3.0 开始并逐步升级github.com/stig/json-framework/downloads 我正在开发一个可以在表格行中显示名字和姓氏的项目。我正在考虑根据它们的 id 值来执行此操作并将它们放在表行中。知道我该怎么做,我的意思是我怎样才能分别获取对象。? @codejunkie。我再次编辑以帮助您。至于表行。在此处查找与 UITableView 相关的问题,祝你好运。如果您觉得您的原始问题已解决,您能否投票或标记为已回答。谢谢【参考方案2】:

https://github.com/johnezang/JSONKit

我用它从 web 服务中获取数据,该服务吐出 50 条记录,每条记录都有另外 20 个与您指定的类似的内部元素......

我以以下方式使用 JSONKit..(看过很多用户的 SBJson,但我对 go 这个词感到困惑。)

JSONDecoder *jArray = [[JSONDecoder alloc]init];
NSMutableArray *theObject = [[NSMutableArray alloc] init];   
 theObject = [jArray objectWithData:theResponseData];//objectWithString:theResponseString
NSMutableArray *csArray = [[NSMutableArray array] retain] ;

    for(id key in theObject)
    
      if([key valueForKey:@"firstName"]  != Nil) 
      
       ........
       
     if([key valueForKey:@"lastName"]  != Nil) 
      
       ........
       
    

检查一下,让我知道它是否有效。顺便说一句,大家的反应很好...很好

【讨论】:

您好,感谢您的回复。但我已经使用 SBJSON 开始了我的项目。

以上是关于如何从iphone中的json数组中获取对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 JSON 数组中的 JSON 对象中的单个值获取数据?

如何从 alamofire 中的 json 数组中获取对象?

在js中如何取出json中的对象的值

c#如何获得返回json数组中的数组

js的Dom对象集合循环遍历过程中数组长度发生变化,小白不懂,求大神指教

C# JSON 反序列化:如何从 JSON 对象数组中获取值 [重复]