📜  JSON 解析错误:无法识别的令牌“<” - Javascript (1)

📅  最后修改于: 2023-12-03 15:32:25.264000             🧑  作者: Mango

JSON 解析错误:无法识别的令牌“<” - Javascript

您是否曾在使用Javascript的JSON解析器时,看到类似于以下错误信息?

JSON 解析错误:无法识别的令牌“&lt;”

这种错误信息通常表示,您的JSON数据中包含了无法被 JSON 解析器所接受的非法字符或令牌。其中,"<" 是 HTML 实体编码后的小于符号 "<"。这意味着您的JSON数据中含有 HTML 实体编码字符。

原因

在生成 JSON 数据时,如果使用了HTML实体编码字符,比如 "<",则会导致JSON解析器无法识别并解析JSON数据。这可能是因为在生成JSON数据的过程中,使用了 HTML 编辑器或富文本编辑器等将输入的数据进行了 HTML 实体编码,而没有将其解码后再输出。

解决方案

为了解决这个问题,需要先将 JSON 数据中的 HTML 实体编码字符进行解码,再进行 JSON 解析。在 Javascript 中可以使用 decodeURIComponent()unescape() 方法对 HTML 实体编码字符串进行解码。例如:

var jsonData = '{"name":"&lt;John&gt;","age":30}';
var decodedJsonData = decodeURIComponent(JSON.parse(jsonData));
console.log(decodedJsonData); // 输出:{ name: "<John>", age: 30 }

另外,如果您在使用第三方库进行 JSON 解析时,也可以查看该库是否支持自动解码 HTML 实体编码字符的函数,例如 jQuery 中的 .parseJSON() 方法。

结论

在使用 JSON 解析器进行 JSON 数据解析时,需要注意数据中是否包含 HTML 实体编码字符。如有,需要先进行解码再进行 JSON 解析。这样可以确保数据的正确性,避免出现无法识别的令牌错误。