2014-06-24 345 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