3

我一直在 grails 项目中编写自定义编组器,以便能够从 json 模型中排除某些字段,例如类名。我正在通过引导程序中调用的 spring bean 注册编组器。

尽管我发现大部分编组代码都非常重复,并且这些技术导致编组器过多。

我想知道是否有更通用的方法是始终忽略 JSON 转换中的某些字段,因此我不必总是为所有内容编写自定义编组器。

如何覆盖默认的 groovy JSON 转换器?

4

1 回答 1

0

如果您使用 InstanceMethodBasedMarshaller,您将能够简单地在每个域类上定义一个 toJSON 方法。这克服了必须注册许多自定义编组器的问题;相反,您将有一个编组员来统治他们。

但是,它只是将创建自定义编组器的负担转移到在每个域类中编写自定义 toJSON() 实现。为了解决这个问题,您可以利用 groovy 类别,这些类别旨在提供跨不相关类的常见行为,即策略模式。就像是:

//Category
class JSONOutputCategory {
    static customizeJSON(Object self) {
        // do whatever standard thing here
    }
}

//Domain
class MyDomain {
...
    public void toJSON(JSON json) {
        use(JSONOutputCategory){
            json.build {
               customizeJSON(this)
            }
        }
    }
}

CAVEAT EMPTOR:我根本没有测试过这个,它更像是一个概念而不是一个实现。

于 2012-10-22T16:21:29.517 回答