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