对于JavaScript对象或JSON字符串,键名中是否有禁止使用的字符?或者需要转义的字符?
更具体地说,我想在键名中使用“$”,“-”和空格。
对于JavaScript对象或JSON字符串,键名中是否有禁止使用的字符?或者需要转义的字符?
更具体地说,我想在键名中使用“$”,“-”和空格。
不。任何有效的字符串都是有效的键。它甚至可以有“as long as you escape It”:
{"The \"meaning\" of life":42}
将这些值加载到某些语言中可能会遇到困难,这些语言试图将键与对象字段名关联。然而,我不知道有这样的案例。
必须避免使用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