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