JSON密钥名称中哪些字符有效/无效?

时间:2011-12-30 03:58:18

标签: javascript json object key

对于JavaScript对象或JSON字符串,键名中是否有任何禁用字符?还是需要转义的字符?

更具体地说,我想在关键名称中使用“$”,“ - ”和空格。

4 个答案:

答案 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”(不在代理对中)。

相关问题