您好我想知道为什么这行不起作用:
JSON.parse({"a":"\u00A9"})
根据这一点,Unicode转义在语法上是合法的:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#String_literals
问题是什么?如何使用JSON.parse安全地解析文本
{"a":"\u00A9"}
是一个JavaScript对象文字。
JSON.parse
期望传递一个字符串,因此它被隐式转换为字符串("[object Object]"
)。
[
很好,因为JSON文本可以从数组开始。
然后o
是一个错误,因为那里不允许。
一个文字的版权符号(记住JavaScript字符串文字中的\u00A9
将在它到达JSON解析器之前被JS解析器使用)或unicode转义序列就可以了。
console.log(JSON.parse('{"a":"\u00A9"}'));
console.log(JSON.parse('{"a":"\\u00A9"}'));
请注意,在包含JSON的JS源代码中创建字符串文字,然后解析它是一个糟糕的主意。你必须处理嵌套的转义级别,这是低效的。
如果您有一个对象:使用该对象。
var data = {"a":"\u00A9"};
console.log(data.a);