Grails json 渲染为地图

Grails json rendering as map

我正在尝试呈现来自 grails 控制器操作的 json 响应。这是我的代码:

render ([message:"voila Sent Successfully!"]) as JSON

但在 gsp 中,它的呈现方式如下:

['message':'Email Sent Successfully!']

上面的文本实际上是一个字符串(因为它在 jquery ajax 调用中的类型在成功事件处理程序中给出了一个字符串),那么我如何将它呈现为 JSON ?

我正在使用 grails 2.4.5,JSON class 实际上是 grails.converters.JSON(不是 grails.converters.deep.JSON)

照做

render ([message:"voila Sent Successfully!"] as JSON ) 即插入 as JSON

括号内。

我想公开另一个答案,它避免了我已经在 IE 中发现的问题。一些较旧的 IE 版本可能会尝试将您的 JSON 下载为文件。

从您的 collection/map 生成您的 JSON 响应,然后将其呈现为字符串,因此:

import grails.converters.JSON
def YourService

def yourControllerNameHere(){   
    def result = YourService.generatesYourResult(),
    resultJSON = result as JSON

    render resultJSON.toString() 
}

然后,在您的 ajax 中,使用 jQuery 将此字符串解析为 JSON-object,即:

$.ajax({
    url     : WEB_ROOT + 'yourUrl/yourControllerNameHere',
    type    : 'post',
    dataType: 'text',
    success : function(resultStr) {
        var result = $.parseJSON(resultStr);
        alert('this is your response type: ' + (typeof result));
        // this is your response type: object
    }
});