我的理解是,如果我试图将stringes引号('和“),我需要转义它们,但我无法解释以下结果,当我在Firebug中尝试相同:JSON到JavaScript转义字符查询
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转换时需要转义单引号和双引号。 感谢您的帮助
编辑: 感谢您的答复。 前两个查询已清除。所以我只需要跳过我用来包围字符串的引号(在我的情况下),并且在字符串中转义任何转义字符本身。除了这2个字符,我不需要转义任何其他字符?
我不是最终查询清楚。如果我只是之前增加”的转义字符,为什么它显示了偶数输出转义字符的。对于如
>>> 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"}"