2011-10-18 44 views
0

強大的文本 * 我有JSON是這樣的: *Objectiv-C:如何在JSON中讀取JSON?

{ 
     "destination_addresses" : [ "Dimitrov, Phnom Penh, Cambodia" ], 
     "origin_addresses" : [ "Tchecoslovaquie, Phnom Penh, Cambodia" ], 
     "rows" : [ 
      { 
      "elements" : [ 
       { 
        "distance" : { 
         "text" : "0.6 km", 
         "value" : 594 
        }, 
        "duration" : { 
         "text" : "2 mins", 
         "value" : 100 
        }, 
        "status" : "OK" 
       } 
      ] 
      } 
     ], 
     "status" : "OK" 
    } 

這裏是我的代碼:

SBJsonParser *parser = [[SBJsonParser alloc] init]; 
    NSDictionary *data = (NSDictionary *) [parser objectWithString:apiResponse error:nil]; 
    NSLog(@"Data = %@",data); 

    // getting the data from inside of "rows" 
    NSDictionary *rows = (NSDictionary *) [data objectForKey:@"rows"]; 
    NSLog(@"Row = %@",rows); 

    NSDictionary *element = (NSDictionary *) [rows objectForKey:@"elements"]; 
    NSLog(@"elements = %@",element); 

    NSDictionary *distance = (NSDictionary *) [rows objectForKey:@"distances"]; 
    NSLog(@"Distance = %@",distance); 

但遇到錯誤: - [__ NSArrayM objectForKey: ]:無法識別的選擇器發送到實例0x5a9afa0與NSDictionary *元=(NSDictionary *)[rows objectForKey:@「elements」];

我想要得到值的距離鍵

回答

1

如果您仔細觀察,rows是數組內的字典。

"rows" : [ 
      { 
      "elements" : [ 
       { 
        "distance" : { 
         "text" : "0.6 km", 
         "value" : 594 
        }, 
        "duration" : { 
         "text" : "2 mins", 
         "value" : 100 
        }, 
        "status" : "OK" 
       } 
      ] 
      } 
     ] 

所以,你需要做的

NSArray *rows   = [data objectForKey:@"rows"]; 
NSDictionary *rowsDict = [rows objectAtIndex:0]; 

NSArray *element = [rowsDict objectForKey:@"elements"]; 
NSLog(@"elements = %@",element); 

NSDictionary *distance = [[element objectAtIndex:0] objectForKey:@"distances"]; 
NSLog(@"distance= %@", distance); 

於是就&等等。

NSLog(@"Distance = %@",distance);