对于JavaScript对象或JSON字符串,键名中是否有禁止使用的字符?或者需要转义的字符?
更具体地说,我想在键名中使用“$”,“-”和空格。
不。任何有效的字符串都是有效的键。它甚至可以有",只要你转义它:
"
{"The \"meaning\" of life":42}
将这些值加载到某些语言中可能会遇到困难,这些语言试图将键与对象字段名关联。然而,我不知道有这样的案例。
以下字符在JSON数据中必须转义,以避免任何问题:
\
\n
\t
JSON解析器可以帮助你处理JSON。
必须避免使用Unicode码点U+D800到U+DFFF:它们在Unicode中是无效的,因为它们为UTF-16代理对保留。一些JSON编码器/解码器会用U+FFFD代替它们。参见例子Go语言和它的JSON库如何处理它们。
因此避免单独使用“\uD800”到“\uDFFF”(而不是成对使用代理)。
值得一提的是,虽然以数字开始键是有效的,但它可能会导致一些意想不到的问题。
例子:
var testObject = { "1tile": "test value" }; console.log(testObject.1tile); // fails, invalid syntax console.log(testObject["1tile"]; // workaround