2014-07-26 72 views
0

我有一個webservice,返回一個有效的JSON數組,但在我的代碼中,我得到以下錯誤。解析JSON錯誤的錯誤3840

「錯誤域= NSCocoaErrorDomain代碼= 3840」操作不能完成 。 (可可錯誤3840.)「(JSON文本沒有以數組或 對象和選項允許片段未設置。)UserInfo = 0x9b9af50 {NSDebugDescription = JSON文本沒有開始與數組或對象和 選項允許片段不允許}「

我知道這個錯誤是由於json中的錯誤。但我已經檢查並驗證了他們認爲有效的各種來源的回覆。

這是我的JSON

NSDictionary *dictionary = [NSDictionary dictionaryWithJSONData:jsonData]; 

Objective-C代碼我也用這個代碼來獲取字典

NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err]; 

但是,當我調試和檢查字典變量,它說「無」

這裏是我的JSON響應

[ 
    { 
     "id":"182", 
     "name":"2 Tone Brown", 
     "price":"2099.0000", 
     "description":"", 
     "image":"http:\/\/www.nnn.com\/images\/2 Tone BG.jpg", 
     "images":[ 
     { 
      "1":"2 Tone BG 1.jpg" 
     }, 
     { 
      "2":"2 Tone BG 2.jpg" 
     }, 
     { 
      "3":"2 Tone BG 3.jpg" 
     }, 
     { 
      "4":"2 Tone BG 4.jpg" 
     }, 
     { 
      "5":"2 Tone BG 5.jpg" 
     } 
     ], 
     "sizes":[ 
     { 
      "id":"16", 
      "size":"L", 
      "price":"0.0000" 
     }, 
     { 
      "id":"17", 
      "size":"XL", 
      "price":"200.0000" 
     }, 
     { 
      "id":"15", 
      "size":"M", 
      "price":"0.0000" 
     }, 
     { 
      "id":"14", 
      "size":"S", 
      "price":"0.0000" 
     }, 
     { 
      "id":"23", 
      "size":"Custom Size", 
      "price":"100.0000" 
     }, 
     { 
      "id":"42", 
      "size":"Please Select", 
      "price":"0.0000" 
     } 
     ] 
    }, 
    { 
     "id":"293", 
     "name":"3 Seam Collar Black", 
     "price":"2499.0000", 
     "description":"Exclusive 3 Collar <br> <br> This beautiful but simple color combination gives you a great look. <br> <br> Colors: Red\/Black, Green\/Blue Check, Sky Blue", 
     "image":"http:\/\/www.nnn.com\/images\/3 Seam Collar Black Main.jpg", 
     "images":[ 
     { 
      "1":"3 Seam Collar Black 1.jpg" 
     }, 
     { 
      "2":"3 Seam Collar Black 6.jpg" 
     }, 
     { 
      "3":"3 Seam Collar Black 2.jpg" 
     }, 
     { 
      "4":"3 Seam Collar Black 3.jpg" 
     }, 
     { 
      "5":"3 Seam Collar Black 5.jpg" 
     }, 
     { 
      "6":"3 Seam Collar Black 4.jpg" 
     } 
     ], 
     "sizes":[ 
     { 
      "id":"17", 
      "size":"XL", 
      "price":"200.0000" 
     }, 
     { 
      "id":"16", 
      "size":"L", 
      "price":"0.0000" 
     }, 
     { 
      "id":"15", 
      "size":"M", 
      "price":"0.0000" 
     }, 
     { 
      "id":"14", 
      "size":"S", 
      "price":"0.0000" 
     }, 
     { 
      "id":"23", 
      "size":"Custom Size", 
      "price":"100.0000" 
     } 
     ] 
    } 
] 

上面的JSON在java中工作正常,但不會在此產生任何結果。

+0

您發佈的JSON無效。 – duci9y

+0

你的數據是一個RTF文件? –

+0

我驗證了JSON來自http://jsonlint.com/它說有效 – user3879669

回答

1

刪除從響應中

<br> 

標籤。當我看着它時,字典崩潰,因爲它開始讀取

<br> 
1

由於您的JSON被[...]包圍,它將返回一個數組而不是字典。

+0

我使用相同的格式,但使用不同的web服務。它的工作正常,但給這個錯誤 – user3879669

+0

@ user3879669這個服務返回一個不同的JSON片,不是嗎?你說它可以正常工作的那個可能會返回一個字典,但是你在問題中提到的那個會返回一個數組。 – duci9y

+0

Yep,以'['開頭的JSON是一個數組 - 只要它試圖實際引用「字典」,代碼就會失敗。 (當然,這與解析錯誤是分開的。) –