0

如何使用 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 文件中没有“动物”键,我该怎么办?

4

3 回答 3

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"]];
    }
于 2014-10-16T13:24:16.063 回答
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);

让我知道这是否有帮助。

于 2014-10-16T06:24:43.027 回答
0

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

NSArray *jsonArray = //Array of Dictionaries
NSMutableArray *arrayOfModels = [AnimalObject arrayOfModelsFromDictionaries:jsonArray];
于 2015-07-08T12:07:41.700 回答