2012-05-02 87 views
0

嗨我遇到了JSON反序列化問題。SBJson反序列化問題

我正在使用SBJson,數據從.net web服務返回。

這是返回的JSON(縮短)

{ 
    "id": "1", 
    "result": [ 
     { 
      "questionID": 21, 
      "question": "What is the secret of eternal life?" 
     }, 
     { 
      "questionID": 20, 
      "question": "What is the meaning of life?" 
     } 
    ] 
} 

我有迄今使用以下代碼

-(void) dataLoaded:(NSData*)data { 

    NSString* jsonString = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease]; 

    NSDictionary *jsonObject = [jsonString JSONValue];  

     NSLog(@"data : %@", [jsonObject valueForKey:@"result"]); 
} 

下面的行[JSONObject的valueForKey:@ 「結果」]返回下列數據

(
     { 
     question = "What is the secret of eternal life?"; 
     questionID = 21; 
    }, 
     { 
     question = "What is the meaning of life?"; 
     questionID = 20; 
    } 
) 

如何將數據獲取到數組中?

這是我第一次使用JSON,所以我不完全確定發生了什麼。

感謝 米克

回答

1

得到一個數組回來了...... 你可以使用像這樣創建一個指向這個數組:

NSDictionary *jsonObject = [jsonString JSONValue]; 
NSArray *myJsonArray = [jsonObject valueForKey:@"result"]; 

EDIT(經過一番評論)

由於您正在記錄[jsonObject valueForKey:@"result"]NSLog打印您發佈的內容,確定該對象是NSArray

你可以指望和日誌這樣的(注意%d):

int c = [myJsonArray count]; 
NSLog("My array's count is: %d", c); 
+0

感謝您的答覆,我試過了更早使用以下「code'NSArray *問題= [JSONObject的valueForKey:@「結果「];'代碼'當我試圖讓數組大小的應用程序轟炸出來。 – user551353

+0

你是什麼意思'轟炸'?你是如何獲得尺寸的? – Alladinian

+0

對不起,我的意思是墜毀,我用下面一行'int tmp = [questions count];' – user551353