ドメイン オブジェクト用にいくつかのカスタム マーシャラーを定義して登録しました。単独で使用すると、1 つのインスタンスをレンダリングするだけで問題なく動作しますが、それらのインスタンスの配列を含むマップを返すときに問題が発生します。この時点では、カスタム マーシャラーは呼び出されていません。
これは私のマーシャラーの 1 つです。
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 のカスタム マーシャラーを実装しようとしましたが、何を返すか、何を書くべきかわかりません。