2015-05-16 135 views
0

我正在尋找一種在grails(2.4.5)中將對象根添加到我的JSON的方法。一般情況下,Grails的渲染對象的JSON列表,像這樣:將對象根添加到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 
     ] 
     } 
    } 
} 

回答

1

我回答了here,它只是指根元素是一個地圖和將列表加入其中,然後將其轉換爲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)  

    } 

} 
+0

如果數據集很大,這將會出現性能問題 – user903772

+0

這不是我想要的,因爲我不想讓編組人員從數據庫中提取數據。此時數據已經被提取。這樣做兩次是一個壞主意。 – Gregg

+0

@ user903772這只是一個示例,顯示如何將根元素添加到JSON中。但是,使用分頁可能是一個解決方案。 – dsharew

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