JSONModel - 如何解析这个文件?

时间:2014-10-16 05:02:40

标签: ios json nsjsonserialization jsonmodel

如何使用JSONModel解析这样的JSON?

[{
    "Value": "Cat",
    "Id": 1
}, {
    "Value": "Dog",
    "Id": 2
}, {
    "Value": "Elephant",
    "Id": 3
}]

如果有这样的事情:

{
    animals: [{
        "Value": "Cat",
        "Id": 1
    }, {
        "Value": "Dog",
        "Id": 2
    }, {
        "Value": "Elephant",
        "Id": 3
    }]
}

没有问题。我会用:

@property (strong, nonatomic) NSArray <AnimalModel> *animalsArray;

但如果我在JSON文件中没有“animals”键,我该怎么办?

3 个答案:

答案 0 :(得分:0)

因为,你需要第一个模型而不是第二个模型,你没有对象键,但你确实有值键数组对。你的完整JSON将被初始化为NSArray而不是NSDictionary你可以尝试以下方法:

-(void)loadJSON{
  /* * * * NSURLRequest to fetch the json in NSData format * * */

 //Parsing JSONData 
 NSError *err;
 if(responseData != nil){

    NSArray *JSONParser = [NSJSONSerialization jsonObjectWithData:responseData options:kNilOptions error:&err];
    if(!err){

          [key1MutableArray addObject:[JSONParser valueForKey:@"Value"]];
          [key2MutableArray addObject:[JSONParser valueForKey:@"Id"]];           
     }else{
          NSLog(@"JSON Error: %@", err.localisedDescription);
     }
  }else{
          NSLog(@"responseData is NIL");
  }
 }
        NSLog(@"%@", key1MutableArray);
}       NSLog(@"%@", key2MutableArray);

如果有帮助,请告诉我。

答案 1 :(得分:0)

对于下面的第二个json响应将是代码。

 id jsonObject = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

    NSArray *array = (NSArray *)jsonObject;
    for(int i=0;i<[array count];i++)
    {
        dict = [array objectAtIndex:i];
        [valueArray addObject:[dict objectForKey:@"Value"]];
        [idArray addObject:[dict objectForKey:@"Id"]];
    }

答案 2 :(得分:0)

您可以尝试将模型创建为集合

NSArray *jsonArray = //Array of Dictionaries
NSMutableArray *arrayOfModels = [AnimalObject arrayOfModelsFromDictionaries:jsonArray];