我正在我的项目中使用Genson,并且刚刚遇到了多态类型的问题(试图序列化泛型类型X的类)。
Genson通过插入一些类元数据as explained here来处理这个问题。
我想使用'addAlias‘特性来使json对类重构的变化具有弹性,但是对我的一个多态类使用这个特性似乎(作为副作用)打开了所有其他(非多态)类的'useClassMetadata’标志。
这意味着为了使我的代码对类重构的更改具有弹性,我需要为我的所有类(以及将来我可能添加的任何类)添加一个别名,这是一件痛苦的事情,而且很容易被遗忘和遗漏。
在genson中,有没有一种方法可以只为一小部分类打开类元数据的包含,并在其余的子集中排除它?
我已尝试添加到GensonBuilder .exclude("@class") .include("@class", classOf[X])
但这并没有什么效果。
有什么想法吗?
发布于 2017-11-08 23:36:31
因此,到目前为止,我想出的最好的办法是创建一个单独的Genson实例,使用与原始实例相同的配置,但为多态类添加了额外的“addAlias”指令。
这只是我的一个选择,因为我可以在序列化多态类时选择适当的Genson实例,然后为其余的选择其他实例。
在我的书中不是一个理想的解决方案,所以我对更好的答案持开放态度:)
https://stackoverflow.com/questions/47177858
复制相似问题