在Groovy中渲染JSON

时间:2014-03-12 14:42:26

标签: json grails groovy

我有以下代码在Groovy中实现JSON:

def index = {
    def list = WordList.list()
    render(contentType:"text/json"){
        LISTS {
            for(item in list){
                LIST (NAME: item.name, ID: item.id);
            }
        }
    }
}

这几乎可以工作,但它没有显示多个结果,即NAME和ID字段在每个循环中被覆盖,导致只返回最后一条记录。使这个工作的正确语法是什么?

2 个答案:

答案 0 :(得分:3)

在这种情况下,我的解决方案是显式构造JSON映射,然后将其呈现为JSON。

一个例子:

def list = WordList.list()
def json = []
list.each{ item ->
    json << [name: item.name, id: item.id]
}
render json as JSON

您需要导入grails.converters.JSON才能使用此方法。

答案 1 :(得分:2)

def list = WordList.list()
list = list.collect { [name: it.name, id: it.id] }

render(contentType: 'application/json') {
   [lists: list]
}