Grails - 将JSON / Map对象传递给客户端

时间:2013-03-28 19:25:08

标签: grails gsp

我正在尝试将JSON对象保存到gsp页面中的data-字段。

模拟控制器:

def test(){
    ['comments': ["1": 1, "3":40 ] ] 
}

GSP(我也试过(comments as JSON)

<%@ page import="grails.converters.JSON" %>
<div class='findme' data-comments="${comments as JSON}">

结果:

<div class='findme' data-comments="{" 1":1,"3":40}">

正如你所看到的,报价都搞砸了。我尝试使用encodeAsHTML,但它没有用。

3 个答案:

答案 0 :(得分:3)

我最近也遇到了这个问题并提出了两个解决方案:

解决方案一:在模板中执行以下操作:

<div class="comments" data-comments="${comments.encodeAsJSON().encodeAsHTML()}">

解决方案二:在控制器中执行此操作:

def test(){
    ['comments': ["1": 1, "3":40 ] as JSON] 
}

并在模板中执行此操作:

<div class="comments" data-comments="${comments.encodeAsHTML()}">

我正在使用jQuery进行解析。无论使用哪种解决方案,我都会得到JSON:

$.parseJSON($('.comments').attr('data-comments'));

答案 1 :(得分:2)

我找到了几种方法。

<div class='findme' data-comments="${(new JSON(comments)).toString().encodeAsURL()}">

然后我必须把它拉出来:

JSON.parse(unescape($('.findme').data('comments')))

找到了另一种方法,但如果你有任何“in in it it it it it it it it it it it it it it it it it it it it it it it it it it it it it it it it it it it

${(comments as JSON).toString().replace("\"", "'")}

答案 2 :(得分:0)

我找到了一种简单的方法。 首先你做:

<div class="comments" data-comments="${comments.encodeAsJSON()}">

然后在javascript中:

eval($('.comments').attr('data-comments'));