空字符串是有效的JSON密钥吗?

时间:2019-11-18 14:37:24

标签: javascript json

以空字符串作为键的JSON对象是否有效,例如{ "c": "x", "": "y" }

如果我按照this jsfiddle在具有以下代码的浏览器中使用它,肯定可以,或者至少它似乎不会破坏网络:

var a = { "a": "x", "b": "y" };
var b = { "c": "x", "": "y" };
var c = JSON.stringify(a);
var d = JSON.stringify(b);
console.log(c);
console.log(d);
var e = JSON.parse(c);
var f = JSON.parse(d);
console.log(e);
console.log(f);

我有一个很好的理由为什么我需要(想要)一个空字符串作为键,但是我只是问浏览器兼容性和面向未来的麻烦吗?

2 个答案:

答案 0 :(得分:3)

Tl; dr是的。 ECMA spec状态(突出显示不是我的规格):

  

6个对象

     

.....

     

JSON语法不对所使用的字符串施加任何限制   作为名称,不需要名称字符串是唯一的,并且不需要   为名称/值对的排序赋予任何意义。

有关如何设置字符串格式的部分,还允许您直接从"到结尾"

  

9字符串

     

enter image description here

答案 1 :(得分:0)

是的,it validates。 JSON规范中没有什么可以不同地处理空键。