2012-04-23 101 views
2

它應該是如此簡單,但我無法得到它的工作。 JSON響應爲 ([{「id」:「1」,「x」:「1」,「y」:「2」},{「id」:2,「x」:「2」 , 「Y」: 「4」}])iOS JSON解析成NSDictionary,然後用SBJson解析NSArray

NSString *response = [request responseString]; 
//response is ([{"id":"1", "x":"1", "y":"2"},{"id":2, "x":"2", "y":"4"}]) 

SBJSON *parser = [[[SBJSON alloc] init] autorelease]; 

NSDictionary *jsonObject = [parser objectWithString:response error:NULL]; 
// jsonObject doesn't have any value here..Am I doing something wrong? 

NSMutableArray Conversion = [jsonObject valueForKey:NULL]; 
//Even if I get the value of jsonObject. I don't know what to put for valueForKey here 

轉換768,16有兩個NSObjects..and它們中的每應具有像

ID:1 X:1 Y:2

id:2 x :2 y:4

回答

6

您的JSON解析器將從您的響應字符串中產生一個NSArray,而不是NSDictionary。請注意,JSON解析器(包括SBJSON)將根據正在解析的json的內容返回數組對象或字典對象。

NSArray *jsonObject = [parser objectWithString:response error:nil]; 

然後,您可以訪問您的陣列中的各個項目(數組元素將是類型NSDictionary中的),並使用valueForKey:獲得每個項目的屬性。

NSDictionary *firstItem = [jsonObject objectAtIndex:0]; 
NSString *theID = [firstItem objectForKey:@"id"]; 
+0

嘗試,並獲得無效CFArrayRef爲jsonObject..It似乎JSONObject的是沒有得到任何東西。我用的斷點檢查,並能看到解析器得到了JSON值.. – MomentH 2012-04-23 22:23:27

+0

我知道了..你的答案是完美的: )但Json返回我得到了(和)所以解析器無法處理它..我已經刪除與響應= [響應stringByReplacingOccurrencesOfString:@「(」withString:@「」];和響應= [響應stringByReplacingOccurrencesOfString:@「)」withString :@ 「」]; **然後它的工作完美..謝謝.. :)是否有一些簡單的方法來刪除'('和')'在同一時間? – MomentH 2012-04-23 22:43:45