我正在尝试解析一个 json 字符串,但出现错误:
> Uncaught SyntaxError: Unexpected token # in JSON at position 13
at JSON.parse (<anonymous>)
at <anonymous>:1:6
Follows the code:
JSON.parse("{\"chars\":\" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿıŁłŒœŠšŸŽžƒˆˇˉ˘˙˚˛˜˝ΔΩμπ‐–—‘’‚“”„†‡•…‰‹›⁄€™Ω∂∆∏∑−∕∙√∞∫≈≠≤≥◊fifl}")
最佳答案
问题是你的转义。您必须转义字符值中的双引号和反斜杠。我从方括号中删除了第二个反斜杠,因为这也会导致解析错误。
此外,为了简化转义传递给 JSON.parse 的值,请在具有字符值而不是构造字符串的对象上使用 JSON.stringify。 参见:JSON Stringify on MDN
字符值的以下重构:
var charObj = {chars: " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿıŁłŒœŠšŸŽžƒˆˇˉ˘˙˚˛˜˝ΔΩμπ‐–—‘’‚“”„†‡•…‰‹›⁄€™Ω∂∆∏∑−∕∙√∞∫≈≠≤≥◊fifl"};
JSON.parse(JSON.stringify(charObj));
关于javascript - JSON 中的意外标记#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46054132/