2

I've defined and registered some custom marshallers for my domain objects. If used alone, just rendering one instance, works fine, but the problem comes when I return a map with an array of those instances. In this moment my custom marshaller is not beign invoked.

This is one of my marshallers:

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()
    }

}

Ans for example this is what I'm returning from my controller:

render text:[achievements:arrayOfAchievements, total:2] as JSON

In previous versions of grails I know there was deep marshallers but I haven't been able to find something similar for grails 3.

I have also tried to implement a custom marshaller for List, but I'm not sure what I should return or write.

Eylen
  • 2,617
  • 4
  • 27
  • 42

0 Answers0