/ / उद्देश्य-सी: JSON में 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 के लिए NS सहकर्मी के साथ भेजा गया तत्व * *) [पंक्तियों objectForKey: @ "तत्वों"];

मैं पाना चाहता हूं दूरी कुंजी में मूल्य!

उत्तर:

जवाब के लिए 2 № 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);