如何在Grails中呈现JSON?

时间:2015-03-30 09:06:52

标签: grails

我有一个对象,

def roles = account.roles

我想以JSON格式呈现它,如

[{'value':1, 'text':'Admin'},{'value':2,'text':'Owner'}, {'value':3,'text':'Sale'}]

当我执行这样的代码时,它无法正常工作,

render(contentType: "text/json"){[
    "value" : roles.id,
    "text" : roles.name
]}

它呈现的格式错误,如{"value":[1,2,3],"text":["Admin","Owner","Sale"]}

我试试这个

def res = roles.each(){
    ['value':it.id, 'text':it.name]
}
render res as JSON

它也没有用。

2 个答案:

答案 0 :(得分:4)

使用collect代替each,例如

def res = roles.collect {['value':it.id, 'text':it.name]}
render res as JSON

答案 1 :(得分:-1)

您可以这样做,将角色渲染为JSON

render(contentType: "application/json") {
        roles = array {
            for (r in roles) {
                role text: r.name, value:r.id
            }
        }
    }

请参阅grails用户指南的xml and json responses部分