2012-03-25 65 views
2

我要求從家庭控制設備的JSON響應:NSJSONSerialization給我錯誤「重複鍵」

NSData* responseData = [NSData dataWithContentsOfURL:url]; 

的JSON數據responseData是完整的,有效的。但是,如果我嘗試

NSDictionary* dict = [NSJSONSerialization 
          JSONObjectWithData:responseData       
          options:kNilOptions 
          error:&error]; 
NSLog("Error: %@", error); 

它給了我下面的錯誤:

Error: Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (Duplicate key for object around character 0.) UserInfo=0x6a8b8e0 {NSDebugDescription=Duplicate key for object around character 0.}

我在網上搜索,但至今未能找到任何幫助。


編輯:JSON響應它很長,所以不是在這裏張貼,請找到它here

+1

如果顯示使用JSON字符串,會更容易。 – MByD 2012-03-25 09:44:02

回答

0

它看起來像JSON很好通過粘貼到http://jsonformat.com/ - 也許你發現了蘋果的錯誤?另一種嘗試和驗證的方法是使用第三方iOS庫並查看它是否會給您帶來相同的錯誤?說,TouchJSON

+0

謝謝! TouchJSON爲我工作,我向蘋果公司報告了這一事件。 – Norbert 2012-03-25 17:08:50

0

我得到相同的錯誤,只有在應用程序運行時隨機。當NSJSONSerialization失敗時,我檢查了它使用JSON查看器衝突的json對象。 JSON總是可以的。多次調用NSJSONSerialization時出現錯誤?

+0

我已經切換到TouchJSON,它迄今爲止做得很好。試一試! :) – Norbert 2012-06-13 11:35:29

0

我得到了同樣的錯誤。我的JSON數據通過JSON驗證器http://jsonformatter.curiousconcept.com/。但是,我在JSON中找到了兩個重複的鍵(在字典的末尾)。在我刪除這些密鑰後,NSJSONSerialization運行順利。

+0

JSON沒有定義應該如何處理重複的鍵。把JSON放入NSDictionary中的任何東西都不可能以有意義的方式處理它們。 – gnasher729 2014-04-15 08:18:08