-1

通常、「データ」トップレベル項目にラップされた json を読み取ります。ただし、以下の場合、トップレベルの「データ」項目はありません。

 [
      {
        "AreaName": null,
        "AreaId": 0,
        "DestinationName": "Alanya",
        "DestinationId": 14,
        "CountryName": "Tyrkiet",
        "CountryId": 15
      },
      {
        "AreaName": null,
        "AreaId": 0,
        "DestinationName": "Antalya",
        "DestinationId": 113,
        "CountryName": "Tyrkiet",
        "CountryId": 15
      }
 ]

通常、私は次のようなことをします

NSDictionary *temp = [[MyArray1 objectAtIndex:0]valueForKey:@"Data"];

しかし、この場合はうまくいきません。このような匿名の JSON オブジェクトの場合、要素をループするにはどうすればよいでしょうか?

4

4 に答える 4

4

1.) 最初に、上記の文字列を使用して NSMutableArray を作成します。

 jsonArray = [NSJSONSerialization JSONObjectWithData:data
                                                               options:0
                                                                 error:&error];

2.) 次に、この配列内のすべてのオブジェクトをループします。

for(NSMutableDictionary *dictionary in jsonArray){
 NSString *name=[dictionary objectForKey:@"AreaName"];
 //and so on.
}
于 2013-05-01T11:20:17.320 に答える
0

まず、https://github.com/stig/json-framework/から JSON フレームワークをダウンロードする必要があります。

そして、クラスの上に JSON.h をインポートします。次に、次のコードを実行します。

NSArray *arr = [responseString JSONValue];

    NSLog(@"JSOn arr count : %d",[arr count]);

    for (int i =0;i< [arr count]; i++) {

    NSDictionary *dicObj = [arr objectAtIndex:i];

    NSString *strAreaName = (NSString*) [dicObj objectForKey:@"AreaName"];
    int areaID = [dicObj objectForKey:@"AreaId"];
    NSString *strDestinationName = (NSString*) [dicObj objectForKey:@"DestinationName"];
int destID = [dicObj objectForKey:@"DestinationId"];
    NSString *strCountryName = (NSString*) [dicObj objectForKey:@"CountryName"];
    int countryID = [dicObj objectForKey:@"CountryId"];

    }

それが役に立てば幸い。

于 2013-05-01T11:45:21.743 に答える
0

あなたの場合、jsonは辞書ではなく、配列なので

NSMutableArray *response = [[NSString stringWithContentsOfURL:[NSURL URLWithString:requestUrlString] encoding:NSUTF8StringEncoding error:NULL] JSONValue];

for(NSDictionary *dictionary in response)
{
     NSLog(@"Data Dictionary is : %@",dictionary);
}
于 2013-05-01T11:21:12.957 に答える
0

試す

//JSON data from webservice
id json = ...
NSArray *areas = nil;
if ([json isKindOfClass:[NSDictionary class]]) {

   areas = json[@"Data"];

}else if ([json isKindOfClass:[NSArray class]])
{
    areas = json;
}

[areas enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
     //Enumerate
}];
于 2013-05-01T11:23:50.427 に答える