Grails-将JSON/Map对象传递给客户端
我试图将JSON对象保存到gsp页面中的Grails-将JSON/Map对象传递给客户端,grails,gsp,Grails,Gsp,我试图将JSON对象保存到gsp页面中的数据-字段中 模拟控制器: def test(){ ['comments': ["1": 1, "3":40 ] ] } GSP(我也尝试了(注释为JSON)) 结果: <div class='findme' data-comments="{" 1":1,"3":40}"> 正如你所看到的,引用都是乱七八糟的。我尝试使用encodeAsHTML,但没有成功。我找到了几种方法 <div class='findme' d
数据-
字段中
模拟控制器:
def test(){
['comments': ["1": 1, "3":40 ] ]
}
GSP(我也尝试了(注释为JSON)
)
结果:
<div class='findme' data-comments="{" 1":1,"3":40}">
正如你所看到的,引用都是乱七八糟的。我尝试使用
encodeAsHTML
,但没有成功。我找到了几种方法
<div class='findme' data-comments="${(new JSON(comments)).toString().encodeAsURL()}">
找到了另一种方法,但是如果你有任何东西里面有一个“的话,它会引起问题。我认为编码是一种方法
${(comments as JSON).toString().replace("\"", "'")}
我最近也遇到了这个问题,并提出了两个解决方案: 解决方案一:在模板中执行以下操作:
<div class="comments" data-comments="${comments.encodeAsJSON().encodeAsHTML()}">
<div class="comments" data-comments="${comments.encodeAsHTML()}">
在模板中执行以下操作:
<div class="comments" data-comments="${comments.encodeAsJSON().encodeAsHTML()}">
<div class="comments" data-comments="${comments.encodeAsHTML()}">
我找到了一个简单的方法。 首先,你要:
<div class="comments" data-comments="${comments.encodeAsJSON()}">
我没有试过,但我认为您也可以这样做:${(注释为JSON).encodeAsJavaScript()}我刚刚试过(在Grails 2.2.3中),实际上您可以使用${(注释为JSON).encodeAsJavaScript()}这将使用反斜杠转义单引号和双引号,因此您可以在单引号或双引号字符串中使用编码结果。(例如'comments':['aa':11,'bb':/two“two”clock/,'cc':33]将被编码为“{\'aa\':11,\'bb\':\'two\\\\\\'two\\\\\\'o'clock\',\'cc\':33}”)@SorinPostelnic u您应该作为附加答案发布。
$.parseJSON($('.comments').attr('data-comments'));
<div class="comments" data-comments="${comments.encodeAsJSON()}">
eval($('.comments').attr('data-comments'));