微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JSON 语法是否允许对象中有重复的键?

如何解决JSON 语法是否允许对象中有重复的键?

标准 (p. ii) :

预计其他标准将参照这一标准,严格遵循 JSON 文本格式,同时对各种编码细节进行限制。这样的标准可能需要特定的行为。JSON 本身没有指定任何行为。

在标准(第 2 页)的更下方,JSON 对象的规范:

对象结构表示为一对围绕零个或多个名称/值对的花括号标记名称一个字符串。每个名称后面都有一个冒号标记,将名称与值分开。单个逗号标记将值与后面的名称分开。

JSON 对象图

它没有提到重复键无效或有效,因此根据规范,我可以安全地假设这意味着它们是允许的。

JSON 库的大多数实现 接受重复键并不与标准冲突,因为第一个引号。

以下是与 C++ 标准库相关的两个示例。当将一些 JSON 对象反序列化为 astd::map时,拒绝重复键是有意义的。但是当将一些 JSON 对象反序列化为 astd::multimap时,正常接受重复键是有意义的。

解决方法

这是有效的json吗?

{
    "a" : "x","a" : "y"
}

http://jsonlint.com/说是的。

http://www.json.org/没有说它被禁止。

但显然这没有多大意义,不是吗?大多数实现可能使用哈希表,因此无论如何它都会被覆盖。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。