JSON中出现意外的令牌#

时间:2017-09-05 11:41:11

标签: javascript json

我试图解析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}")

1 个答案:

答案 0 :(得分:2)

问题在于逃避。您必须转义双引号以及字符值中的反斜杠。我从方括号中删除了第二个反斜杠,因为这也导致了解析错误。

此外,为了简化转义值以传递给JSON.parse,请在具有字符值而不是构造字符串的对象上使用JSON.stringify。 请参阅:JSON Stringify on MDN

以下字符值重组有效:

var charObj = {chars: " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿıŁłŒœŠšŸŽžƒˆˇˉ˘˙˚˛˜˝ΔΩμπ‐–—‘’‚“”„†‡•…‰‹›⁄€™Ω∂∆∏∑−∕∙√∞∫≈≠≤≥◊fifl"}; 

JSON.parse(JSON.stringify(charObj));