对于JavaScript对象或JSON字符串,键名中是否有任何禁用字符?还是需要转义的字符?
更具体地说,我想在关键名称中使用“$”,“ - ”和空格。
答案 0 :(得分:149)
没有。任何有效的字符串都是有效的密钥。只要你逃脱它,它甚至可以"
:
{"The \"meaning\" of life":42}
在某些语言中加载这些值时可能会遇到困难,这些语言试图将键与对象字段名称相关联。但是,我不知道任何此类案件。
答案 1 :(得分:47)
必须在JSON数据中转义以下字符以避免任何问题
'单引号
“引用
\ backslash
所有控制字符,例如\ n \ t
JSON Parser可以帮助您处理JSON。
编辑: Here's a replacement JSON parser since OP's link is dead
答案 2 :(得分:9)
值得一提的是,虽然使用数字启动密钥有效,但可能会导致一些意外问题。
IE:
var testObject = {
"1tile": "test value"
};
console.log(testObject.1tile); // fails, invalid syntax
console.log(testObject["1tile"]; // workaround
答案 3 :(得分:6)
必须避免使用Unicode代码点U + D800到U + DFFF:它们在Unicode中为invalid,因为它们是为UTF-16代理对保留的。一些JSON编码器/解码器将用U + FFFD替换它们。请参阅示例how the Go language and its JSON library deals with them。
所以单独避免“\ uD800”到“\ uDFFF”(不在代理对中)。