我正在使用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
调用放置一个替换器函数来检查这些,但它开始看起来很混乱,我希望能想出办法来实现这一切。一次用正则表达式或其他东西。
请协助:)
答案 0 :(得分: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\\"}"'
答案 1 :(得分:0)
逃离双行情..
"label({HTML: \"Gunner\"})"
或者在
中使用单引号 "label({HTML: 'Gunner'})"
答案 2 :(得分:0)
像这样使用\
:
{"key":"text (\"blabla\")"}
或者更清洁的代码:
{'key':'text ("blabla")'}
但如果您同时拥有"
和'
,则无法选择,例如:
{"key":"text 'blabla' \"otherblabla\""}