2013-05-30 28 views
0

我想獲取下面的JSON,因爲它的標籤都是動態的(不是固定的)。我不知道如何正確獲取它們。如何獲取動態JSON

{ 
    Level1: { 
    row1: { 
     1: "on", 
     2: "off", 
     3: "off", 
     4: "on", 
     5: "on", 
     6: "on", 
     7: "on", 
     8: "on", 
     9: "on", 
     10: "on", 
     11: "on", 
     12: "on", 
     13: "on", 
     14: "on", 
     15: "on", 
     16: "on", 
     17: "on", 
     18: "on", 
     19: "on", 
     20: "on", 
     attr: { 
     total: "20", 
     type: "Gold" 
     } 
    }, 
    row10: { 
     1: "on", 
     2: "on", 
     3: "on", 
     4: "on", 
     5: "on", 
     6: "on", 
     7: "on", 
     8: "on", 
     9: "on", 
     10: "on", 
     11: "on", 
     12: "on", 
     13: "on", 
     14: "on", 
     15: "on", 
     16: "on", 
     17: "on", 
     18: "on", 
     19: "on", 
     20: "on", 
     attr: { 
     total: "20", 
     type: "Bronze" 
     } 
    } 
    }, 
    Level3: { 
    row1: { 
     1: "on", 
     2: "on", 
     3: "on", 
     4: "on", 
     5: "on", 
     6: "on", 
     7: "on", 
     8: "on", 
     9: "on", 
     10: "on", 
     11: "on", 
     12: "on", 
     13: "on", 
     14: "on", 
     15: "on", 
     16: "on", 
     17: "on", 
     18: "on", 
     19: "on", 
     20: "on", 
     attr: { 
     total: "20", 
     type: "Gold" 
     } 
    }, 
    row5: { 
     1: "on", 
     2: "on", 
     3: "on", 
     4: "on", 
     5: "on", 
     6: "on", 
     7: "on", 
     8: "on", 
     9: "on", 
     10: "on", 
     11: "on", 
     12: "on", 
     13: "on", 
     14: "on", 
     15: "on", 
     16: "on", 
     17: "on", 
     18: "on", 
     19: "on", 
     20: "on", 
     attr: { 
     total: "20", 
     type: "Bronze" 
     } 
    } 
    } 
} 

問題在於,在這個數量的層面上,行和裏面它也是動態的東西。在這我需要獲取所有行的開/關值,級別虎鉗。我怎樣才能做到這一點?

這是我試過到目前爲止:

for (NSString *key in [self.mGetDataDict allKeys]) { 
    NSLog(@"Accessing .... %@", key); 
    level = key; 
    for (NSString *rowKey in self.mGetDataDict[key]) { 
     NSLog(@"%@", rowKey); 
     [arrRows addObject:rowKey]; 
     for (NSString *valueKey in self.mGetDataDict[key][rowKey]) { 
      // NSLog(@"%@ -> %@", valueKey, self.mGetDataDict[key][rowKey][valueKey]); 
      if ([valueKey isEqualToString:@"attr"]) { 
       dictRow = self.mGetDataDict[key][rowKey][valueKey]; 
      } 
     } 
     NSLog(@"--------ROW OVER------------%@\n", dictRow); 
     [arrSeats addObject:[dictRow valueForKey:@"total"]]; 
     [arrType addObject:[dictRow valueForKey:@"type"]]; 
     NSLog(@"--------seats in row------------%@\n", arrSeats); 

     NSString *row = [NSString stringWithFormat:@"%@", [arrSeats objectAtIndex:0]]; 
     rows = [row integerValue]; 
    } 
    NSString *num = [arrSeats valueForKeyPath: @"@sum.self"]; 
    tot = [num integerValue]; 
    [arrTot addObject:[NSString stringWithFormat:@"%d", tot]]; 
    tot = 0; 
    [arrSeats removeAllObjects]; 
    NSLog(@"--------ROW OVER tot seats------------%@\n", arrTot); 
    NSLog(@"--------------------seats:%@\n", num); 
    NSLog(@"--------------------\n"); 
} 
+1

@kgdesouz請檢查到目前爲止我所嘗試過的。 –

+0

你看過Apple內置的'NSJSONDeserializer'嗎? –

回答

1

試試這個,

var json_data = {your_data_json}; 
for (var level_index in json_data){ 
//level_index - level values like level1, level3 
//json_data[level_index] - to get value object, i mean row1{} 
    for (var row_index in json_data[level_index]){ 
    //row_index as row1 or row10, .... 
     for (var record_index in json_data[level_index][row_index]){ 
      if (record_index == "attr"){ 
      //you r in attr {} object 
      } 
      else { 
      //getting 
      // record_index 1,2,3,.... 
      //json_data[level_index][row_index][record_info] - on, on, on,......... 
      } 
     } 
    } 
}