我知道,我不需要它,但我认为我确实这样做了。
我希望在呈现之前有handlebarsjs
呈现的有效JS代码。 JS缩小工具只是缩小有效的JS文件并在运行中缩小处理时间。这是JS把手代码。
var stringsObj = JSON.parse('{{{ json stringsDataObj }}}');
如您所见,单引号使得该行代码成为有效的 JS代码。 handlebars
帮助程序是:
function json(context) {
return JSON.stringify(context);
}
问题是什么?好吧,stringObj
中的一些项目碰巧有单引号
stringsDataObj = {
"str1": "I'm here",
"str2": "You're there"
}
当它出租时
var stringsObj = JSON.parse('"str1": "I'm here", "str2": "You're there"');
给出了JS错误
有没有办法逃避JSON.stringify中的单引号? 我尝试使用替换器功能,但没有成功。
答案 0 :(得分:5)
这应该使单引号显示在浏览器中:
var final_string = JSON.stringify(context).replace(/[\/\(\)\']/g, "'");
答案 1 :(得分:1)
应该实际呈现的内容是:
var stringsObj = JSON.parse('{"str1": "I'm here", "str2": "You're there"}');
JSON是有效的Javascript代码,它在语法上是Javascript的一个子集。这意味着JSON.stringify
正在输出有效的Javascript文字。您实际上并不需要经历生成JSON的复杂情况,然后确保它是有效的 Javascript字符串文字,然后使用JSON.parse
进行解析。你这样做:
var stringsObj = {{{ json stringsDataObj }}};
呈现:
var stringsObj = {"str1": "I'm here", "str2": "You're there"};
哪个是有效的Javascript对象文字。
答案 2 :(得分:-1)
我用以下帮助
解决了我的问题function json(context) {
return JSON.stringify(context).replace(/[\/\(\)\']/g, "\\$&");
}
即,必须在字符串化之后完成转义。