JSON中是否允许双重定义,如果是,那么它们应该如何解释?

时间:2011-08-26 09:12:55

标签: json semantics definition

这是有效的JSON吗?

{
  "name": "foo",
  "name": "bar"
}

如果是这样,应该如何解释?

5 个答案:

答案 0 :(得分:7)

根据RFC,它在技术上是合法的,但强烈劝阻:

  

对象SHOULD中的名称是唯一的。

您可以选择以下两条路线之一:

  • JavaScript路线:在JavaScript中,这是非法的。由于JSON应该是一个子集,因此拒绝输入为无效。
  • Postel / Python路由:使用最新值覆盖"var"条目。

答案 1 :(得分:2)

根据RFC 4627,不鼓励使用重复的名称。请参阅 2.2部分。对象

  

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

以上网址还引用了我们RFC 2119,它指定了如何解释应该这个词:

  

应该

     

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

然而,许多解析器& JSON API将其实现为应该总是,并在遇到重复属性时抛出错误或忽略多个值。这是includes jQuery.parseJSON()以及.NET's JSON serialization

答案 2 :(得分:0)

有效的JSON,因为有两个名称变量。阅读this以帮助您更好地理解JSON。

答案 3 :(得分:0)

JSon对象与任何其他对象一样,不能具有两个具有相同名称的属性。这与在地图中两次使用相同密钥的方式相同是非法的。

如果在一个对象中有两个具有相同名称的键,则JSONObject会抛出异常。您可能希望更改对象,以便不在同一对象下重复键。

在这种情况下,更改将使您的json键名称具有值作为数组

答案 4 :(得分:0)

不,不是。您有两个具有相同标签/名称/标题的属性。这是一个非常simple and short explanation of the JSON