例如,我有下一个Domain类
User{
String name
}
此外,我有2个此类对象
new User(name: "John").save()
new User(name: "Alex").save()
如何在UserController中查看“list”操作以JSON格式表示User.list(),如下所示
{1: "John", 2: "Alex"}
让我更准确一点。我想要这样的东西:
UserController{
def list = {
render(contentType: "text/json") {
User.list().each {user->
user.id = user.name
}
}
}
但遗憾的是,这不起作用。
答案 0 :(得分:2)
尝试数组结构,
def list = {
render(contentType: "text/json") {
results = array {
User.list().each {user->
result "${user.id}" : "${user.name}"
}
}
}
}
答案 1 :(得分:2)
我找不到JSONBuilder API的解决方案。因此我在org.codehaus.jackson的帮助下完成了我的解决方案。
response.setContentType("text/json")
JsonGenerator g = jsonFactory.createJsonGenerator(response.getOutputStream())
g.writeStartObject()
for (user in users) {
g.writeStringField(user.id.toString(), user.name)
}
g.writeEndObject()
g.close()
答案 2 :(得分:1)
当我想在grails中将某些内容编码为JSON时,我将所有内容放在地图中:
render ['1':john.name, '2':alex.name] as JSON
答案 3 :(得分:0)
从@aldrin答案开始,GRAILS3 json呈现需要更正,因为array
指令不再起作用(并且更正确的是“ application”而不是“ text”),因此解决方案必须是>
def list = {
def ulist = User.list()
render(contentType: "application/json") {
results(ulist) { user ->
userid user.id
username user.name
}
}
}