2015-05-16 2 views
0

Я ищу способ добавить корни объектов к моему JSON в графе (2.4.5). Как правило, Grails предоставляет список JSON объектов следующим образом:Добавить объект Root в 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, это только о том, чтобы корневой элемент, чтобы быть карта и dding список в него с ключом 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)  

    } 

} 
+0

это будет иметь проблемы с производительностью, если набор данных большой – user903772

+0

Это не то, что я хочу, потому что я не хочу, чтобы маршаллер вытягивать данные из базы данных. Данные будут уже получены в этот момент. Выполнение этого дважды - плохая идея. – Gregg

+0

@ user903772 Это просто пример, показывающий, как добавить корневой элемент в JSON. Но да, используя разбиение на страницы, может быть решением. – dsharew

0
Can

эту помощь?

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 
Смежные вопросы