Genson选择性地使用useClassMetadata和addAlias

时间:2017-11-08 10:55:08

标签: scala polymorphism genson

我在我的项目中使用Genson并且刚刚遇到多态类型问题(尝试序列化泛型类型X的类)。

Genson通过插入一些类元数据as explained here来处理这个问题。

我想使用'addAlias'功能使json对类重构更改具有弹性,但对我的一个多态类使用此功能似乎(作为副作用)为所有其他类打开'useClassMetadata'标志(非多态)类。

这意味着让我的代码适应类重构更改我需要为我的所有类(以及我可能添加的任何未来类)添加别名,这是一种痛苦,容易被遗忘和遗漏。

在genson中是否有办法只为一小部分类子集打开类元数据并将其排除在其余类中?

我已尝试添加到GensonBuilder .exclude("@class") .include("@class", classOf[X])

但这没有效果。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

所以我到目前为止所提出的最好的方法是使用与原始配置相同的配置创建一个单独的Genson实例,但是对于多态类的附加'addAlias'指令。

这对我来说只是一个选项,因为我可以在序列化多态类时选择适当的Genson实例,然后为其余类选择另一个实例。

在我的书中不是一个理想的解决方案,所以我愿意接受更好的答案:)