【问题标题】:Objective-C JSON - Convert JSON object to native object?Objective-C JSON - 将 JSON 对象转换为本机对象?
【发布时间】:2011-11-27 05:39:17
【问题描述】:
{"status": "FRE", "list": [{"make": "Toyota", "id": 1, "model": "camry", "engine": "Four Cylinder"}{"make": "Ford", "id": 3, "model": "focus", "engine": "Four Cylinder"}]}

如何提取每个“carJSON object 并将其放入本机object?我正在使用SBJSON。这是我当前的代码,但它只能提取一个汽车元素,当我需要能够遍历每个汽车对象并保存它时:

NSString *responseString = [request responseString];
     NSString *responseDict = [responseString JSONValue];

     NSArray *keys = [NSArray arrayWithObjects:@"id",@"make",@"model",@"engine", nil];
     NSArray *objects = [NSArray arrayWithObjects:[responseDict valueForKeyPath:@"list.make"],[responseDict valueForKeyPath:@"list.model"],[responseDict valueForKeyPath:@"list.id"],[responseDict valueForKeyPath:@"list.engine"] , nil];

     self.car = [[NSDictionary alloc]initWithObjects:objects forKeys:keys];

【问题讨论】:

    标签: iphone objective-c ios json


    【解决方案1】:

    不要手动执行所有操作,而是使用 Jastor - https://github.com/elado/jastor 您只需创建简单的类,initWithDictionary 将为您完成整个分配工作。

    【讨论】:

      【解决方案2】:

      试着这样推理.. 当您执行[[[request responseString] JSONValue] valueForKey:@"list"]]; 时,它将返回您的cars 列表数组。

      然后您迭代每个 array 并将其保存到您的 car 元素中...

      例子:

      NSArray *arrayCar =  [NSArray arrayWithArray:[[[request responseString] JSONValue] valueForKey:@"list"]];
      
      
      for (NSDictionary *carDict in arrayCar) {
      Car car = [[Car alloc] init]; 
      car.id = [carDict valueForKey:@"id"]; 
      car.origin= [carDict valueForKey:@"make"];
       ... ... }
      

      【讨论】:

      • 效果很好。我只是不太明白,但现在完全理解了。
      • 使用arrayWithArray的任何特殊原因:即使列表应该是一个数组?它检查类型吗?
      • 不,它不检查类型,我给出了一个引用上面给出的示例的数组示例。如果没有,我通常会进行类检查:if ([[[request responseString] JSONValue] valueForKey] isKindOfClass:[NSArray class]) ..else if ([[[request responseString] JSONValue] valueForKey:@"list"] isKindOfClass:[NSString class]] .. .
      • 你需要知道你会收到什么样的格式,你会在客户端处理..并处理所有可能的情况,例如如果我得到 [[[request responseString] JSONValue ] valueForKey:@"FRE"],它将返回一个 NSDictionary 而不是 NSArray
      猜你喜欢
      • 2016-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-02
      • 1970-01-01
      • 2017-06-16
      相关资源
      最近更新 更多