2011-03-24 83 views
0

解码JSON与JSONKit给出错误

{"flights":[{"flight":{"flightno":"BAW699","timestamp":"2011-03-22 07:06:02","route":"LOWW-EGLL"}},{"flight":{"flightno":"BAW706","timestamp":"2011-03-21 19:08:02","route":"EGLL-LOWW"}},{"flight":{"flightno":"BAW5MG","timestamp":"2011-03-21 16:33:02","route":"LEMG-EGLL"}},{"flight":{"flightno":"BAW3AG","timestamp":"2011-03-21 11:25:02","route":"EGLL-LEMG"}},{"flight":{"flightno":"BAW5EB","timestamp":"2011-03-20 19:18:02","route":"EGLL-LPPT"}},{"flight":{"flightno":"BA0489","timestamp":"2011-03-20 09:40:02","route":"LEBL-EGLL"}},{"flight":{"flightno":"BA0475","timestamp":"2011-03-19 16:51:02","route":"LEBL-EGLL"}},{"flight":{"flightno":"BAW489","timestamp":"2011-03-18 08:08:02","route":"LEBL-EGLL"}},{"flight":{"flightno":"BA0799","timestamp":"2011-03-17 18:37:02","route":"EGLL>EFHK"}},{"flight":{"flightno":"BAW799","timestamp":"2011-03-17 16:31:01","route":"EFHK-EGLL"}},{"flight":{"flightno":"BAW794","timestamp":"2011-03-17 11:55:02","route":"EGLL-EFHK"}},{"flight":{"flightno":"GEUUZ","timestamp":"2011-03-17 09:43:02","route":""}},{"flight":{"flightno":"BAW487","timestamp":"2011-03-16 19:32:01","route":"LEBL-EGLL"}},{"flight":{"flightno":"BAW486","timestamp":"2011-03-16 16:57:02","route":"EGLL-LEBL"}},{"flight":{"flightno":"BAW459","timestamp":"2011-03-16 14:10:01","route":"LEMD-EGLL"}},{"flight":{"flightno":"BAW41LM","timestamp":"2011-03-16 10:09:02","route":"EGLL-LEMD"}},{"flight":{"flightno":"BA0795","timestamp":"2011-03-16 08:27:02","route":""}},{"flight":{"flightno":"BAW795","timestamp":"2011-03-16 07:01:02","route":"EFHK-EGLL"}},{"flight":{"flightno":"BAW798","timestamp":"2011-03-15 18:23:02","route":"EGLL-EFHK"}},{"flight":{"flightno":"BAW701","timestamp":"2011-03-15 14:24:01","route":"LOWW-EGLL"}},{"flight":{"flightno":"BAW700","timestamp":"2011-03-15 11:04:01","route":"EGLL-LOWW"}},{"flight":{"flightno":"BAW68BL","timestamp":"2011-03-15 08:14:01","route":"LEBL-EGLL"}},{"flight":{"flightno":"BAW82BL","timestamp":"2011-03-14 18:40:03","route":"EGLL-LEBL"}},{"flight":{"flightno":"BAW849","timestamp":"2011-03-14 08:15:02","route":"EPWA-EGLL"}},{"flight":{"flightno":"BAW40CB","timestamp":"2011-03-13 19:30:03","route":"EGLL-LEBL"}},{"flight":{"flightno":"BAW475","timestamp":"2011-03-13 15:30:02","route":"LEBL-EGLL"}},{"flight":{"flightno":"z.NO-FLIGHTNO","timestamp":"2011-03-13 13:00:03","route":""}},{"flight":{"flightno":"BAW474","timestamp":"2011-03-13 12:00:03","route":"EGLL-LEBL"}},{"flight":{"flightno":"BAW4WP","timestamp":"2011-03-13 08:45:02","route":"LPPT-EGLL"}}]} 

然后我尝试解析此使用JSONKit但只能得到尽可能下来,“航班”我好像有以下的JSON验证为有效的JSON ..不能访问“飞行”对象。

当我做了以下

-(void)parseJSON:(NSString *)jsonData{ 

    NSDictionary *deserializedData = [jsonData objectFromJSONString]; 
    for (id key in deserializedData) { 

     NSLog(@"key: %@, value: %@", key, [deserializedData objectForKey:key]); 

    } 

} 

只有以下被放出来的日志....

key: flights, value: (
     { 
     flight =   { 
      flightno = BAW906N; 
      route = "EGLL-EDDF"; 
      timestamp = "2011-03-24 08:38:02"; 
     }; 
    }, 
     { 
     flight =   { 
      flightno = BAW365; 
      route = "LFLL-EGLL"; 
      timestamp = "2011-03-24 06:17:01"; 
     }; 
    }, 
     { 
     flight =   { 
etc.... 

我希望能够静下心来,每次飞行,并在一刻卡住了!

+0

我建议使用JSON框架。 http://code.google.com/p/json-framework/ – binnyb 2011-03-24 14:39:29

回答

2

得到这样所有航班的数组:

NSArray *flights = [deserializedData valueForKeyPath:@"flights.flight"]; 
+0

完美!谢谢,没有意识到点符号会起作用! – 2011-03-24 14:40:56

+0

每一个字典? – 2011-03-24 14:44:37

+1

从JSON结构来看,我会说是 – Jilouc 2011-03-24 14:47:45

1

那是因为你有你的dictionairy对象dictionairies数组,存取权限他们是这样的:

for (NSDictionairy *flight in [deserializedData objectForKey:@"flights"]){ 
    NSLog(@"flight object with route.: %@", [flight objectForKey:@"route"]); 
} 
+0

嗯不完全?出现很多错误。 - [NSCFString objectForKey:]:无法识别的选择器发送到NSLog上的实例0x719d930! – 2011-03-24 14:26:34

+0

在for语句中使用了错误的变量,我编辑了我的代码并进行了测试。工作正常。 – Wolfert 2011-03-24 14:32:28