我正在尝试序列化一个其中一个成员带有其自己的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的一些很好的示例。

09-07 11:25