Изменить grails результата findAll или метод ответа

В настоящее время я разрабатываю RESTFull с использованием Grails. Я использую метод findAll для получения определенных данных:

def query = PlannedEvent.where{}
query = query.where{rooms.id == i }
respond query.findAll()

и метод ответа для генерации вывода:

{"class":"mp.ra.PlannedEvent","id":480,"baseEvent":{"class":"Event","id":1636},"equipment":[],"rooms":[{"class":"Room","id":22}]}

Как я могу изменить результат, чтобы получить больше информации о baseEvent и Room.

Класс устроен следующим образом:

class PlannedEvent {    
   Event baseEvent

   static hasMany = [rooms:Room,equipment:Resource]
   static belongsTo = [Room,Event,Resource]

   static constraints = {
      equipment nullable:true
   }

person majorbelow    schedule 12.03.2014    source источник


Ответы (1)


Что вам нужно, так это собственный JSON Marshaller для вашего доменного класса PlannedEvent. По сути, вам нужно реализовать свой собственный маршллер, а затем зарегистрировать его.

Вот отличный сообщение в блоге о том, как реализовать собственную сортировку JSON.

Таким образом, вы можете точно контролировать, как все упорядочивается в JSON.

person Joshua Moore    schedule 12.03.2014
comment
Предоставленная ссылка была полезной, но как я могу вернуть разные результаты на основе запроса, например: /plannedevents => дает список без подробностей, /plannedevents/1 => дает подробности из запланированного события - person majorbelow; 14.03.2014