1

我正在使用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,但它开始看起来很混乱,我希望想出一种方法来使用正则表达式或其他东西一次完成所有操作。

请协助 :)

4

3 回答 3

1

你至少需要逃跑

  • "->\"
  • \\->\\
  • 铬->\r
  • 低频->\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\\"}"'
于 2012-11-01T19:52:06.867 回答
0

逃脱双引号..

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

或者在里面使用单引号

 "label({HTML: 'Gunner'})"
于 2012-11-01T19:51:20.503 回答
0

\像这样使用:

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

或者为了更简洁的代码:

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

但是如果你同时拥有"and ,你就别无选择',比如:

{"key":"text 'blabla' \"otherblabla\""}
于 2012-11-01T19:55:19.103 回答