安全的JSON解析。 JSON解析如何解析UTF字符?

问题描述 投票:0回答:1

您好我想知道为什么这行不起作用:

JSON.parse({"a":"\u00A9"})
I tried to serach in MDN website but I didn't find anything referring to in json.parse

根据这一点,Unicode转义在语法上是合法的:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#String_literals

问题是什么?如何使用JSON.parse安全地解析文本

javascript json character-encoding
1个回答
2
投票

{"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);
© www.soinside.com 2019 - 2024. All rights reserved.