【问题标题】:Parsing JSON dictionary / array解析 JSON 字典/数组
【发布时间】: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 的方式。此外,它非常快。

标签: iphone json ios nsdictionary asihttprequest


【解决方案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 中的一栋房子?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多