JSON.stringify没有逃脱?

Har*_*rry 14 javascript json escaping

我正在使用`JSON.stringify?字符串化一个对象,但引号不转义?我误解了它是否想逃避报价?

这将输出到模板中,而不会转义任何引号:

{"console":{"free":false}}
Run Code Online (Sandbox Code Playgroud)

Jim*_*ler 24

它不会逃避角色,不,就是encodeURIComponent这样,你可以一起使用它们,如同encodeURIComponent(JSON.stringify(obj))

  • 假设数据需要进行URI编码.问题并没有表明,并且有许多编码方案. (7认同)
  • 说这似乎是一个错误 - “它不会转义字符,不,有用于那个的 encodeURIComponent”并且将它们组合起来似乎也是一个错误......如果你使用 JSON.stringify('XXXXX"') - 你会得到(XXXXX%22) ...如果你使用 encodeURIComponent('XXXXX"') - 你得到 (XXXXX%2522) 为什么你会同时做这两个?如果您同时使用 encodeURIComponent(JSON.stringify('XXXXX"')) - 你会得到 (%22XXXXX%2522%22) 似乎这是一个错误建议,我想不出它的用法。 (2认同)
  • 太感谢了!!!这是完美的解决方案。我在 StackOverFlow 上找到了一些其他的答案,但它们不起作用。我实际使用的是传递给 Stringify 的转义函数,该函数调用encodeURIComponent (2认同)

Moe*_*oes 13

对该对象进行两次stringify就可以了

console.log(JSON.stringify(JSON.stringify({"console":{"free":false}})));
// "{\"console\":{\"free\":false}}"
Run Code Online (Sandbox Code Playgroud)


Jar*_*ish 6

没有违规代码进行检查,我想知道是否还有其他事情发生.作为测试......

<div id="test"/>

var ex = {'test':'This is "text".'};

$('#test').text(JSON.stringify(ex));
Run Code Online (Sandbox Code Playgroud)

输出:{"test":"This is \"text\"."}(<注意转义的双引号)

http://jsfiddle.net/userdude/YVGbH/

  • 是什么让我们如此确定这个 `$` 存在于 OP 的环境中并按照示例中描述的方式工作?我们甚至可以对 DOM 提出同样的问题。 (3认同)

Ric*_*asi 6

属性名称周围的引号不应该被转义,只在字符串内引用.你的JSON很好:)