2012-02-16 37 views
0

我正在開發帶有最新SDK和XCode 4.2的iOS應用程序。JSON解析錯了嗎?

爲了解析JSON響應,我使用這個JSON解析器:https://github.com/stig/json-framework/

我收到來自Web服務這個JSON字符串(這是控制檯日誌):

2012-02-16 08:21:59.525 JReader[558:207] {"rules": [ 
{ "id_categoria": "3","categoria": "cat03" },{ "id_categoria": "2","categoria": "cat02" } 
    ] 
    } 

JSON解析器解析到一個NSArray與這兩個元素(這是控制檯日誌):

2012-02-16 08:22:04.910 JReader[558:207] { 
    categoria = "cat03"; 
    "id_categoria" = 3; 
} 

2012-02-16 08:22:04.911 JReader[558:207] { 
    categoria = "cat02"; 
    "id_categoria" = 2; 
} 

Objective-C代碼解析是:

- (IBAction)go:(id)sender 
{ 
    parser = [[SBJsonParser alloc] init]; 
    NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://XXX"]]; 

    NSData* response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 

    NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]; 

    // parse the JSON response into an object 
    // Here we're using NSArray since we're parsing an array of JSON status objects 
    NSLog(@"%@", json_string); 
    NSDictionary* datos = [parser objectWithString:json_string error:nil]; 
    NSArray* data = [datos objectForKey:@"rules"]; 
    for (int i = 0; i < data.count; i++) 
    { 
     NSLog(@"%@", [data objectAtIndex:i]); 
    } 

} 

我期待有一個NSDictionary這些對:

key   value 
============ ============ 
categoria   cat03 
id_categoria  3 

我的問題:

  1. 是否有任何錯誤的json字符串?

  2. 爲什麼要這樣解析?

這是我第一次解析JSON,所以我不知道它是否解析得很好。

+0

它有什麼問題? – 2012-02-16 07:36:06

+0

爲什麼這不是您的預期產出?你認爲什麼是錯的? – 2012-02-16 07:36:46

+0

我已經用我期待的內容更新了我的問題。這是我第一次json parsin,所以我不知道它是否正確。 – VansFannel 2012-02-16 07:40:53

回答

2

這沒有什麼錯。這是一本字典中的字典數組,其密鑰爲rules。這正是你得到的。

1

問題:

NSDictionary* datos = [parser objectWithString:json_string error:nil]; 
NSArray* data = [datos objectForKey:@"rules"]; 
for (int i = 0; i < data.count; i++) 
{ 
    NSLog(@"%@", [data objectAtIndex:i]); 
} 

所以你登錄該陣列內部的主字典。你正確地得到解析的JSON,你只是記錄其他東西。

+0

我的問題是'[data objectAtIndex:i]'是一個NSDictionary,我不知道。所以,當我看到它的日誌時,這個'[data objectAtIndex:i]'是一個NSString。我很抱歉,這是我的錯。 – VansFannel 2012-02-16 08:31:42