3

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

模拟控制器:

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但没有用。

4

3 回答 3

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'));
于 2013-08-21T17:32:11.127 回答
2

我找到了几种方法来做到这一点。

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

然后我必须像这样把它拉出来:

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

找到了另一种方法,但如果你有任何带有 " 的东西,它会导致问题。我认为编码它是要走的路。

${(comments as JSON).toString().replace("\"", "'")}
于 2013-03-28T19:44:40.333 回答
0

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

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

然后在javascript中:

eval($('.comments').attr('data-comments'));
于 2014-08-25T13:15:58.833 回答