JSON.parse()和转义字符在JavaScript中是如何工作的?

时间:2015-12-23 15:20:17

标签: javascript json escaping

假设我有一个对象变量:

var obj = {
    key: '\"Hello World\"'
}

然后我尝试在Chrome devtools控制台中使用JSON.stringify将其解析为字符串:

JSON.stringify(obj) // "{"key":"\"Hello World\""}"

我得到了结果"{"key":"\"Hello World\""}"。然后我把它交给一个字符串

var str = '{"key":"\"Hello World\""}'

至少我尝试将其转换回obj:

JSON.parse(str);

但是浏览器告诉我错误Uncaught SyntaxError

让我困惑的是为什么这是错的?我从原始对象中获取字符串,我只想将其转回。

如何解决此问题?如果我想完成将obj转换为字符串并将其返回的工作,我该怎么办?

2 个答案:

答案 0 :(得分:4)

您尝试将JSON转换为字符串文字,方法是将其包含在'个字符中,但\字符在JavaScript字符串文字中具有特殊含义,\"转换为"在JavaScript解析器到达JSON解析器之前到\

您还需要转义var str = '{"key":"\\"Hello World\\""}' 个字符。

var result = {"key":"\"Hello World\""};

也就是说,一般来说,最好不要尝试在JavaScript字符串文字中嵌入JSON,只是为了用JSON.parse解析它们。 JSON语法是JavaScript的一个子集,因此您可以直接使用它。

genK : for k in J to (2**(g+1))-d-1 generate
begin
  gen2d : if ((k - J) mod (2 * d)) = 0 generate
    -- stuff
  end generate gen2d;
end generate;

答案 1 :(得分:0)

尝试:

var str = '{"key":"\\"Hello World\\""}';