我很努力想知道爲什麼這段代碼不工作。我有許多其他視圖使用不同的JSON服務。所有工作正常。但是,這根本不是。我試圖從服務中取回值,但是當我試圖循環它時(參見下面的代碼),數組是無的。顯然我錯過了一些簡單的東西,但我一直在探討這個問題。解析JSON對象 - 目標C
JSON服務的抽象視圖;
{
"0": {
"altitude": "14500",
"latitude": "41.41555",
"longitude": "-73.09605",
"realname": "David KGNV"
},
"1": {
"altitude": "61",
"latitude": "33.67506",
"longitude": "-117.86739",
"realname": "Mark CT"
},
"10": {
"altitude": "38161",
"latitude": "40.51570",
"longitude": "-93.25554",
"realname": "Bob CYYZ"
},
"100": {
"altitude": "33953",
"latitude": "52.35600",
"longitude": "5.30384",
"realname": "Jim LIRQ"
}
}
JSON調用的摘要視圖;
*注意NSArray * currentMapArray valueKeyPath設置爲「」,因爲我需要JSON結果中的所有元素。
NSError *_errorJson = nil;
jsonArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
if (_errorJson != nil) {
NSLog(@"Error %@", [_errorJson localizedDescription]);
} else {
//Do something with returned array
dispatch_async(dispatch_get_main_queue(), ^{
NSDictionary *mapJson = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
//Loop through the JSON array
NSArray *currentMapArray = [mapJson valueForKeyPath:@""];
//set up array and json call
mapArray = [[NSMutableArray alloc]init];
for (int i = 0; i< currentMapArray.count; i++)
{
//create our object
NSString *nAltitude = [[currentMapArray objectAtIndex:i] objectForKey:@"altitude"];
NSString *nRealname = [[currentMapArray objectAtIndex:i] objectForKey:@"realname"];
NSString *nLatitude = [[currentMapArray objectAtIndex:i] objectForKey:@"latitude"];
NSString *nLongitude = [[currentMapArray objectAtIndex:i] objectForKey:@"longitude"];
[mapArray addObject:[[LiveVatsimMap alloc]initWithaltitude:nAltitude andrealname:nRealname andlatitude:nLatitude andlongitude:nLongitude]];
}
currentMapArray的結果爲NIL,導致NSString未被正確填充。
for (int i = 0; i< currentMapArray.count; i++)
當然,當我硬代碼JSON節點即10到ValueKeyPath值然後將其提供正確的數據結果和相應地填充。
任何想法?很好,我只是在這個目標的C東西新。
這是你的第一個問題重複零]' –
而YOY你派遣一個異步任務解析JSON? –
你認爲這是做什麼:'NSArray * currentMapArray = [mapJson valueForKeyPath:@「」];'? –