我正在寻找一种方法来将对象根添加到grails中的JSON(2.4.5)。通常,Grails会像这样呈现JSON对象列表:
[{"id":1,"title":"Catan","description":"Catan"}]
但我需要它看起来像:
{"games": [{"id":1,"title":"Catan","description":"Catan"}]}
理想情况下,我想调整我创建的自定义编组器来执行此操作,但我不确定如何解决此问题:
class GameMarshaller {
void register() {
JSON.registerObjectMarshaller(Game) { Game node ->
return [
id : node.id,
title : node.title,
description : node.description
]
}
}
}
答案 0 :(得分:1)
我回答了here,它只是将根元素设为地图,并使用键games
将列表添加到其中,然后将其转换为 JSON 。
所以这适合你的情况:
class GameMarshaller {
void register() {
def games = Game.list().collect{ node ->
[
id : node.id,
title : node.title,
description : node.description
]
}
def result = ([games: games] as JSON)
}
}
答案 1 :(得分:0)
这有帮助吗?
def o = new JSONObject()
def arr = new JSONArray()
def g = new JSONObject()
games.each{
g.put("id",it.id)
...
arr.add(g)
}
o.put("games",arr)
respond o