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