我已经为我的域对象定义并注册了一些自定义编组器。如果单独使用,只渲染一个实例,工作正常,但是当我返回一个包含这些实例数组的地图时,问题就来了。在这一刻,我的自定义编组器没有被调用。
这是我的编组之一:
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 例如,这是我从控制器返回的内容:
render text:[achievements:arrayOfAchievements, total:2] as JSON
在以前的 grails 版本中,我知道有深度编组器,但我无法为 grails 3 找到类似的东西。
我也尝试为 List 实现一个自定义编组器,但我不确定我应该返回或写什么。