解析JSON字典/数组

4
如果一个JSON Web服务返回类似这样的内容(房屋细节):
[
    {
        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];

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


看一下这个解析器 https://github.com/johnezang/JSONKit。它将 JSON 记录转换为 Objective-C 对象,类似于 NSPropertyListSerialization 处理 plist。而且,它非常快。 - Alexei Sholik
1个回答

9
{
        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类,比如你的房屋(属性:id、价格、位置、大小),并按照以下方式迭代它...(考虑到你最终拥有了上述内容)。

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];
}

Thanks,


谢谢您的回复。请问您是在处理populatedHouseArray中的单个房屋还是多个房屋? - sys_debug

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接