NSJSONSerialization 给我错误“重复键”
Posted
技术标签:
【中文标题】NSJSONSerialization 给我错误“重复键”【英文标题】:NSJSONSerialization gives me error "Duplicate key" 【发布时间】:2012-03-25 09:37:58 【问题描述】:我请求家庭控制设备的 JSON 响应:
NSData* responseData = [NSData dataWithContentsOfURL:url];
responseData
中的JSON数据完整有效。但是,如果我尝试
NSDictionary* dict = [NSJSONSerialization
JSONObjectWithData:responseData
options:kNilOptions
error:&error];
NSLog("Error: %@", error);
它给了我以下错误:
错误:错误域=NSCocoaErrorDomain 代码=3840“操作无法完成。(Cocoa 错误 3840。)”(字符 0 周围对象的重复键。) UserInfo=0x6a8b8e0 NSDebugDescription=字符周围对象的重复键0.
我搜索了网络,但到目前为止找不到任何有用的东西。
编辑:JSON响应很长,所以不要在这里发布,请找到它here。
【问题讨论】:
如果显示使用 JSON 字符串会更容易。 【参考方案1】:通过将 JSON 粘贴到 http://jsonformat.com/ 中,它看起来很好 - 也许您发现了 Apple 错误?另一种尝试验证的方法是使用第三方 ios 库,看看它是否会给您同样的错误?说,TouchJSON?
【讨论】:
谢谢! TouchJSON 为我工作,我将此事件报告给了 Apple。【参考方案2】:我得到了同样的错误,只是在应用程序运行时随机出现。当 NSJSONSerialization 失败时,我使用 JSON 查看器检查了它阻塞的 json 对象。 JSON 总是可以的。 NSJSONSerialization 被多次调用时的错误?
【讨论】:
我已经切换到 TouchJSON,到目前为止它做得很好。试试看! :)【参考方案3】:我遇到了同样的错误。我的 JSON 数据在 http://jsonformatter.curiousconcept.com/ 处通过了 JSON 验证器。但是,我在我的 JSON 中发现了两个重复的键(在字典的末尾)。删除这些键后, NSJSONSerialization 工作顺利。
【讨论】:
JSON 没有定义如何处理重复键。任何将 JSON 放入 NSDictionary 的东西都不可能以有意义的方式处理它们。以上是关于NSJSONSerialization 给我错误“重复键”的主要内容,如果未能解决你的问题,请参考以下文章
Swift 2 - NSJSONSerialization.JSONObjectWithData 处理错误 [重复]
iOS:NSJSONSerialization:错误的代码或错误的 JSON 结构?