Grails 3 глубокий JSON маршаллер
Я определил и зарегистрировал несколько пользовательских маршаллеров для своих доменных объектов. Если использовать один, просто рендеринг одного экземпляра, работает нормально, но проблема возникает, когда я возвращаю карту с массивом этих экземпляров. В этот момент мой заказной маршаллер не вызван.
Это один из моих маршаллеров:
class BackendCompanyMarshaller implements ObjectMarshaller<JSON> {
@Override
public boolean supports(Object object) {
object instanceof Company
}
@Override
public void marshalObject(Object object, JSON converter)
throws ConverterException {
JSONWriter writer = converter.getWriter()
writer.object()
writer.key('id').value(object.id)
.key('name').value(object.name?.encodeAsHTML()?:'')
.key('description').value(object.description?.encodeAsHTML()?:'')
.key('enterprise').value(object.enterprise?.encodeAsHTML()?:'')
writer.endObject()
}
}
Например, вот что я возвращаю из моего контроллера:
render text:[achievements:arrayOfAchievements, total:2] as JSON
В предыдущих версиях Grails я знаю, что были глубокие маршаллеры, но я не смог найти что-то подобное для Grails 3.
Я также пытался реализовать собственный маршаллер для List, но я не уверен, что мне следует возвращать или писать.