1

我正在尝试使用 NSJSONSerialization 解析本地 JSON 文件。在 iOS 6 上运行良好,但在 iOS 5 上出现 The operation couldn’t be completed. (Cocoa error 3840.)" (Duplicate key for object around character 1515.)错误 我尝试了各种 JSON 验证服务,所有这些服务都认为它是一个有效的 JSON 文件。我读过 \ 字符可能会导致这种情况,但我的 JSON 不包含使用 Find 验证的 \ 字符。我该怎么做才能使这个 JSON 在 iOS 5 上反序列化?

4

1 回答 1

3

根据RFC 4672 ,重复密钥并非无效。在第 2.2 节中。对象,它只是说明:

“...对象中的名称应该是唯一的。”

“应该”一词的含义在RFC 2119中定义:

  1. 应该这个词,或形容词“推荐”,意味着在特定情况下可能存在忽略特定项目的正当理由,但在选择不同的课程之前,必须理解并仔细权衡全部含义。

也就是说,NSJSONSerialization在 iOS 6 中行为仍然“正确”。

IMO,关于重复键的行为应该是一个可配置的选项:

  1. 如果这是具有唯一键的关联容器(对于 NSDictionary 来说是这样),则静默接受重复键并可能忽略生成的表示中的重复条目,或者
  2. 将警告记录到错误控制台,或
  3. 发出错误信号。
于 2013-08-28T21:43:03.940 回答