转义括号内的引号

时间:2012-11-01 19:48:28

标签: javascript escaping

我正在使用JSON.stringify创建以下内容:

{"id":"3172043","Img":"../assets/7/14/NPCgunnerStanding.png","ImgWidth":145,"ImgHeight":210,"Width":"145","Height":"210","Left":649,"Top":165,"Parent":"3172015","MouseOver":"label({HTML: "Gunner"})","Idle":"animate({ rate:100 , pause:4000 })topImage("../assets/img/npc-exclamation3.gif")","MouseOut":"label({})","Proximity":"","Click":"modal({title:"Gunner",iframe: "../assets/7/modals/BEFGunner.php"})"}

并将其存储在我的数据库中。这部分工作正常,但是当我再次查看时,由于括号内的引号,我得到了对象的错误。

我怎样才能逃脱这些报价?

我开始为stringify调用放置一个替换器函数来检查这些,但它开始看起来很混乱,我希望能想出办法来实现这一切。一次用正则表达式或其他东西。

请协助:)

3 个答案:

答案 0 :(得分:1)

你至少需要逃脱

  • " - > \"
  • \\ - > \\
  • CR - > \r
  • LF - > \n

要在JS中执行此操作

var charToJson = { '"': '\\"', '\\': '\\\\', '\r': '\\r', '\n': '\\n' };

var JSONStringLiteral = '"'
    + myPlainTextString.replace(/[\\\"\r\n]/g, function (c) { return charToJson[c]; })
    + '"';

或者,如果您在现代浏览器上运行,JSON.stringify应该为您执行此操作。

JSON.stringify('{"foo":"bar"}') === '"{\\"foo\\":\\"bar\\"}"'

答案 1 :(得分:0)

逃离双行情..

"label({HTML: \"Gunner\"})"

或者在

中使用单引号
 "label({HTML: 'Gunner'})"

答案 2 :(得分:0)

像这样使用\

{"key":"text (\"blabla\")"}

或者更清洁的代码:

{'key':'text ("blabla")'}

但如果您同时拥有"',则无法选择,例如:

{"key":"text 'blabla' \"otherblabla\""}