首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JSON语法允许对象中有重复的键吗?

JSON语法允许对象中有重复的键吗?
EN

Stack Overflow用户
提问于 2014-02-17 23:16:02
回答 4查看 131.3K关注 0票数 238

这是有效的json吗?

代码语言:javascript
运行
复制
{
    "a" : "x",
    "a" : "y"
}

http://jsonlint.com/同意了。

http://www.json.org/没有说这是被禁止的。

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

EN

回答 4

Stack Overflow用户

发布于 2015-11-21 17:22:27

在处理同时接受XML和JSON的API时,我遇到了类似的问题,但没有说明它将如何处理所接受的JSON中的重复键。

以下是示例JSON的有效XML表示:

代码语言:javascript
运行
复制
<object>
  <a>x</a>
  <a>y</a>
</object>

将其转换为JSON后,您将获得以下内容:

代码语言:javascript
运行
复制
{
  "object": {
    "a": [
      "x",
      "y"
    ]
  }
}

从一种处理重复键的语言到另一种语言的自然映射,在这里可以作为潜在的最佳实践参考。

希望这对某些人有帮助!

票数 11
EN

Stack Overflow用户

发布于 2016-10-15 01:06:35

应该是唯一的并不意味着必须是唯一的。然而,如上所述,一些解析器会失败,而其他解析器只会使用解析的最后一个值。但是,如果规范被清理了一点,以允许重复,那么我可以看到一个使用事件处理程序将JSON转换为HTML或其他格式的用途……在这种情况下,解析JSON并创建另一种文档格式是完全有效的……

代码语言:javascript
运行
复制
[
  "div":
  {
    "p": "hello",
    "p": "universe"
  },
  "div":
  {
    "h1": "Heading 1",
    "p": "another paragraph"
  }
]

然后可以很容易地解析为html,例如:

代码语言:javascript
运行
复制
<body>
 <div>
  <p>hello</p>
  <p>universe</p>
 </div>
 <div>
  <h1>Heading 1</h1>
  <p>another paragraph</p>
 </div>
</body>

我看得出这个问题背后的原因,但事实是...我不会相信的。

票数 3
EN

Stack Overflow用户

发布于 2017-07-11 10:47:35

根据互联网工程任务组(IETF)发布的JSON当前标准RFC-7159,声明“对象中的名称应该是唯一的”。然而,根据定义IETF文档中使用的术语的RFC-2119,“应该”一词实际上意味着“……在特定情况下可能存在合理的理由来忽略特定的项目,但在选择不同的路线之前,必须理解并仔细权衡其全部含义。”这本质上意味着,虽然推荐使用唯一键,但这不是必须的。我们可以在JSON对象中有重复的键,但它仍然有效。

在实际应用中,我看到当在JSON中发现重复的键时,会考虑最后一个键的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21832701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档