2012-03-25 67 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