2014-06-24 147 views
0

我想解析一些JSON与AFNetworking和NSDictionary。然而,JSON有些奇怪。 JSON包含穿梭的路线,但我在JSON中看不到'路线'。解析JSON与AFNetworking到NSDictionary

当我运行这段代码时,我得到一个空的NSDictionary和15个分配空间。

NSString *methodURL = [NSString stringWithFormat:@"%@GetRoutesForMapWithSchedule", BASE_URL]; 

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
[manager GET:methodURL parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { 
    _routes = (NSDictionary *)responseObject; 
    //_route = _routes[@"Stops"]; 

    NSLog(@"JSON: %@", responseObject); 
} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    NSLog(@"Error: %@", error); 
}]; 

任何人都可以解释我怎么能得到一个路线的所有信息? This是JSON。

NSArray *routes = (NSArray *)responseObject; 

    NSDictionary *oneRoute = responseObject[0]; 
    NSDictionary *stops = oneRoute[@"Stops"]; 
+1

你错过了你的模型类。您通常会使用该类将json数据序列化到您创建的模型类中 – jakenberg

+0

请您详细说明一下吗? – user3741418

+1

@jakepeterson这与问题无关。他可能有一个模特班,他没有发布,因为它不相关。 – Dima

回答

1

问题是,顶级JSON对象实际上是一个数组,而不是您试图将其转换为字典的顶级JSON对象。另一方面,数组中的每个元素都是一个字典。

下面是一些代码来获取一般数据结构并从一个路径中获取一段数据。

NSArray *routes = (NSArray *)responseObject; 

NSDictionary *firstRoute = responseObject[0]; 
NSString *description = firstRoute[@"Description"]; 

编辑:为了解析Stops,你会做这样的事情:

NSArray *stops = firstRoute[@"Stops"]; 
NSDictionary *firstStop = stops[0]; 
NSString *stopDescription = firstStop[@"Description"]; 
+0

我试图让所有的停止,但似乎是做错了,我已经更新了我的问题,你可以看看吗? – user3741418

+0

“停止”也是一个字典数组。更新我的答案,向您展示如何解析该问题。您需要查看JSON的结构以查看其中的对象。方括号('[]')表示一个数组,并且具有由冒号(':')分隔的键 - 值对的波形括号('{}')是字典。 – Dima