【发布时间】:2014-03-25 02:50:37
【问题描述】:
我的理解是,如果我试图对引号('和“)进行字符串化,我需要对它们进行转义,但是当我在 firebug 中尝试相同的结果时,我无法解释以下结果:
1. >> JSON.stringify({foo: "a"a'a"});
SyntaxError: missing } after property list
推断:这是意料之中的,因为我没有逃避 " 和 '
2 >>> JSON.stringify({foo: "a\"a'a"});
"{"foo":"a\"a'a"}"
推理/问题:JSON 字符串是否还会在 " 之前显示转义字符以及为什么它在不转义单引号的情况下工作
当我尝试将上面生成的输出字符串解析回 JS 对象时,JSON 也会抛出错误?
>>> JSON.parse("{"foo":"a\"a'a"}")
SyntaxError: missing ) after argument list
最后解释下面的结果:基本上,如果我将单引号转义一次,它不会出现在输出字符串中,但如果我转义两次,它就会出现
>>> JSON.stringify({foo: "a\"a\'a"});
"{"foo":"a\"a'a"}"
>>> JSON.stringify({foo: "a\"a\\'a"});
"{"foo":"a\"a\\'a"}"
基本上,我试图了解在与 JSON 进行转换时何时以及如何转义单引号和双引号。 感谢您的帮助
编辑: 感谢您的回复。 前两个查询很清楚。所以我只需要转义用来括住字符串的引号(在我的情况下为“)并转义字符串中的任何转义字符。除了这两个之外,我不需要转义任何其他字符?
我对最后一个查询不清楚。如果我只是在'之前增加转义字符,为什么它会在输出中显示偶数个转义字符。例如
>>> JSON.stringify({foo: "a\"a\'a"});
"{"foo":"a\"a'a"}"
>>> JSON.stringify({foo: "a\"a\\'a"});
"{"foo":"a\"a\\'a"}"
>>> JSON.stringify({foo: "a\"a\\\'a"});
"{"foo":"a\"a\\'a"}"
【问题讨论】:
标签: javascript json escaping