Изменить результат 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
   }

1 ответ

Решение

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

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

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

Другие вопросы по тегам