2013-05-15 95 views
3

我想將一個字符串轉換成一個json對象,但我不確定爲什麼這不起作用。當我nslog輸出時,我被告知urldata不適用於json序列化,但是當查看字符串時,它在我看來像有效的json。我也嘗試編碼到utf8,但它仍然不會序列化。我在這裏錯過了什麼嗎? - 注意從帖子中省略不必要的代碼。解析JSON數據的問題

Get請求

urlData = [NSURLConnection sendSynchronousRequest:urlRequest 
           returningResponse:&response 
              error:&error]; 

NSDictionary *tempDict = [NSDictionary alloc]; 

解析

if ([NSJSONSerialization isValidJSONObject:urlData]) { 
    NSLog(@"is valid"); 
    tempDict = [NSJSONSerialization JSONObjectWithData:urlData kniloptions error:&error]; 
} 

NSLog(@"is not valid"); 

定義: isValidJSONObject: 返回一個布爾值,指示一個給定的對象是否可以被轉換爲JSON數據。

+1

IsValidJsonObject聽起來像是錯誤的方法。聽起來像是在將對象轉換爲數據之前檢查對象。你想要相反的方向。 – Fogmeister

+0

@Fogmeister:你可能是對的。不過,在我看來,在這種情況下,'isValidJSONObject'應該總是返回true。 (什麼使NSString不被JSON序列化?) – cHao

+0

urlData是一個NSData對象。你不能將一個NSData對象編碼成JSON數據。他正在檢查對象的編碼。他需要檢查解碼對象。 – Fogmeister

回答

4

因爲你已經在你的問題提的是,isValidJSONObject

返回一個布爾值,指示給定的對象是否可以 轉換 JSON數據

在你的情況,你不想創建JSON數據,而是使用JSON數據創建一個字典。 :

tempDict = [NSJSONSerialization JSONObjectWithData:urlData 
              options:NSJSONReadingMutableContainers 
              error:&error]; 

if (!tempDict) { 
    NSLog(@"Error parsing JSON: %@", error); 
} 
+0

謝謝你的工作 – Jamesla