我正在尝试序列化一个类,其中一个成员带有自己的JSON序列化实现。我不确定如何将其与其他属性包含在一起。 例如
class Foo {
String fieldA;
String fieldB;
Bar bar;
}
班级Bar
有一个方法toJSONString()
。目前,我通过将JsonSerializer
注册为TypeAdapter
来包含它:
class BarSerializer implements JsonSerializer<Bar> {
@Override
public JsonElement serialize(Bar bar, Type type, JsonSerializationContext ctxt) {
return new JsonParser().parse(bar.toJSONString());
}
}
我无法更改Bar
的代码,或者我无法直接使用其字段对其进行序列化,因为它具有一些深层嵌套的结构,并且我对其成员类类型没有任何控制权。正如您在上面的方法中所看到的,Bar
对象被再次序列化,解析和序列化。
在Bar
中是否还有其他简单/有效的序列化Foo
的方式?
答案 0 :(得分:1)
如果您想要一种有效的方式,建议使用TypeAdapter
以下说明是从JsonSerializer的文档中复制的:
新应用程序应该更喜欢TypeAdapter,其流API是 比这个界面的树API更有效。
查看此link以获取有关TypeAdapter的一些好例子。