如何为类创建多个自定义JSON编组器

Raf*_*ael 2 grails json

我需要有几个自定义JSON marshallers,因为我想以不同的方式为不同的目的进行编组.我知道如何使用以下方法设置自定义marshaller应用程序:

JSON.registerObjectMarshaller(MyClass) {
...
}  
Run Code Online (Sandbox Code Playgroud)

但这让我对这个特殊的定义感到困惑.

我怎样才能创建一个adhoc marshaller,比方说,只有一种方法?

dma*_*tro 5

您可以为对象Marshallers配置命名配置.这是我最近遇到的一个例子.

JSON.createNamedConfig( 'myDesiredApi' ) { 
     it.registerObjectMarshaller( SomeDomain ) { SomeDomain someDomain ->
         // Desired response map
     }
}
Run Code Online (Sandbox Code Playgroud)

渲染响应时,用法如下:

JSON.use( 'myDesiredApi' ) {
    render someDomain as JSON
}
Run Code Online (Sandbox Code Playgroud)

  • 无耻的插件:如果你有很多名为marshallers,你可以使用我的[Grails Json Apis](http://grails.org/plugin/json-apis)插件使用域类注释来简化他们的定义. (2认同)