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

这是有效的json吗?

{

"a" : "x",

"a" : "y"

}

http://jsonlint.com/表示同意。

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

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

回答:

从标准(第ii页):

可以预期,其他标准将严格遵循JSON文本格式来引用这一标准,同时对各种编码细节施加限制。此类标准可能需要特定的行为。JSON本身未指定任何行为。

在标准(第2页)中,进一步介绍了JSON对象的规范:

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

它没有提及重复密钥无效或有效,因此根据规范,我可以放心地认为这意味着它们是允许的。

由于首引号,大多数JSON库实现不接受重复键并不与标准冲突。

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

以上是 JSON语法是否允许对象中有重复键? 的全部内容, 来源链接: utcz.com/qa/419567.html

回到顶部