属性键中的标点符号是否会导致使用符号散列键的Ruby等语言中的开发人员可用性问题,而在Javascript中,这些字符会阻止开发人员使用点符号进行属性访问。
答案 0 :(得分:7)
JSON Specification未明确禁止在对象的名称/值对中使用连字符或任何其他字符。
这是一个好主意是另一个,但大多数语言都没有处理特殊字符作为关键,例如, JavaScript的:
var x = {"a-b": "hello"};
console.log(x['a-b']); // prints "hello"
由于a-b
不是有效的属性名称x.a-b
无法按预期工作,但JavaScript使用[]
表示法为对象解除引用提供了替代语法。
另一个例子,PHP:
$x = json_decode('{"a-b": "hello"}');
echo $x->{'a-b'};
同样,$x->a-b
不起作用,因此PHP支持使用->{}
表示法进行解除引用。