解析 JSON 字典/数组

Posted

技术标签:

【中文标题】解析 JSON 字典/数组【英文标题】:Parsing JSON dictionary / array 【发布时间】:2011-04-13 16:37:36 【问题描述】:

如果 JSON 网络服务返回类似这样的内容(房屋详情)

[
    
        id:4,
        price: 471,
        location: "New York",
        size: 3000
    ,
    
        id:7,
        price: 432,
        location: "London",
        size: 3200
    ,
    
        id:22,
        price: 528,
        location: "Tokyo",
        size: 2000
    
]

我将如何逐一遍历每个房屋?我正在使用 ASIHTTPRequest 和 JSON 解析器:http://stig.github.com/json-framework/

我想我可以像这样得到字典:

NSString *theResponse = [request responseString];
NSDictionary *dictionary = [theResponse JSONValue];

.. 但我不确定如何遍历每个房子。

【问题讨论】:

看看这个解析器github.com/johnezang/JSONKit。它将 JSON 记录转换为 Objective-C 对象,类似于 NSPropertyListSerialization 处理 plist 的方式。此外,它非常快。 【参考方案1】:

        id:4,
        price: 471,
        location: "New York",
        size: 3000
    ,
    
        id:7,
        price: 432,
        location: "London",
        size: 3200
    ,
    
        id:22,
        price: 528,
        location: "Tokyo",
        size: 2000
    

这是字典数组...您可以创建一个 Modal 类您的 House(attributed :id,price,location,size) 并按如下方式对其进行迭代...(考虑到您最终拥有上述内容)..

NSArray *houses = [dictionary objectForKey:<youHaveNotProvideItInYourData>];
NSMutableArray *populatedHouseArray = [[NSMutableArray alloc]init];
for(int i=0;i<[houses count];i++)

  NSDictionary *tempDictionary = [houses objectAtIndex:i];
  House *tempHouse = [[House alloc]init];
  if([tempDictionary objectForKey:@"id"]!=nil
  
    tempHouse.id = [tempDictionary objectForKey:@"id"];
  
  //and so on for other keys

  [populatedHouseArray addObject:tempHouse]; 
  [tempHouse release];

谢谢,

【讨论】:

感谢以上。您能否澄清一下您是否正在处理populatedHouseArray 中的一栋房子?

以上是关于解析 JSON 字典/数组的主要内容,如果未能解决你的问题,请参考以下文章

用于解析 JSON 并返回字典数组的 Swift 函数

使用字典解析 JSON 数组

如何在ios中将字典的双引号数组解析为json?

swift 3中从数组到字典的JSON解析问题

解析json字典,数组中的数组?在更深的巢穴中获取钥匙对象?

解析 JSON 字典时调试器中的不同类型