我正在尝试序列化一个其中一个成员带有其自己的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
吗? 最佳答案
如果您想要一种有效的方法,建议使用TypeAdapter
以下解释摘自JsonSerializer的文档:
新应用程序应首选TypeAdapter,其流API为
比该接口的树API更有效。
查看此link,以获得有关TypeAdapter的一些很好的示例。