我使用Google Gson将Java对象序列化为JSON。现在,我使用registerTypeAdapter
方法为一些类添加自定义序列化。通过使用此方法,我需要将所有要序列化的类导入到项目中。
因为我正在处理一个对象可以附加自定义类的项目,所以我正在寻找一个解决方案,在该解决方案中,我创建一个特定的方法(例如,toJson
),并告诉Gson在以默认模式序列化之前搜索该方法。
public class Banana {
...
public JsonObject toJson() {
// do stuff here
}
}
当Gson发现这个方法存在时,它就使用它,否则它就继续使用默认的序列化。
这是正确的方法吗?有没有其他方法可以将序列化代码包含到类中?
1条答案
按热度按时间g0czyy6m1#
我认为您应该使用
TypeAdapterFactory
。让具有自订序列化的类别实作某个界面,例如:
然后执行类似以下的操作:
那么就只注册一次自定义工厂,例如:
如果你不能改变类来实现
CustomSerializable
,你也可以使用反射来确定inf是否有一个toJson()
方法,但是如果有这样的方法而不是你添加的话,这可能会有很糟糕的副作用。