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

在JavaScript对象或JSONstring的键名中是否有禁止使用的字符? 还是需要逃避的angular色?

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

不,任何有效的string都是有效的密钥。 它甚至可以"只要你逃脱它:

 {"The \"meaning\" of life":42} 

将这些值加载到某些语言中可能会遇到困难,这些语言尝试将键与对象字段名称相关联。 但是,我不知道有这样的情况。

以下字符必须在JSON数据中转义以避免任何问题

'单引号

“报价

\反斜杠

所有控制字符如\ n \ t

JSONparsing器可以帮助您处理JSON。

编辑: 这是一个替代的JSONparsing器,因为OP的链接已经死了

必须避免Unicode码点U + D800到U + DFFF:它们在Unicode中是无效的 ,因为它们是为UTF-16替代对保留的。 一些JSON编码器/解码器将用U + FFFDreplace它们。 例如,请参阅Go语言及其JSON库如何处理它们 。

所以请避免将“\ uD800”单独设置为“\ uDFFF”(不在代理对中)。

值得一提的是,用数字开始键是有效的,这可能会导致一些意想不到的问题。

IE:

var testObject = { "1tile": "test value" }; console.log(testObject.1tile); // fails, invalid syntax console.log(testObject["1tile"]; // workaround