以空字符串作为键的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);
我有一个很好的理由为什么我需要(想要)一个空字符串作为键,但是我只是问浏览器兼容性和面向未来的麻烦吗?
答案 0 :(得分:3)
Tl; dr是的。 ECMA spec状态(突出显示不是我的规格):
6个对象
.....
JSON语法不对所使用的字符串施加任何限制 作为名称,不需要名称字符串是唯一的,并且不需要 为名称/值对的排序赋予任何意义。
有关如何设置字符串格式的部分,还允许您直接从"
到结尾"
:
9字符串
答案 1 :(得分:0)
是的,it validates。 JSON规范中没有什么可以不同地处理空键。