一尘不染

在Gson中反序列化一个抽象类

json

我正在尝试使用Gson反序列化JSON格式的树对象。每个节点都包含其子节点作为对象类型Node的字段。Node是一个接口,具有多个具体的类实现。在反序列化过程中,如果我不知道节点属于哪种类型,那么在反序列化节点时如何与Gson沟通要实现哪个具体类?每个节点都有一个指定类型的成员字段。当对象为序列化形式时,是否有一种方法可以访问该字段,并以某种方式将该类型传达给Gson?

谢谢!


阅读 312

收藏
2020-07-27

共1个答案

一尘不染

我建议为s
添加一个自定义JsonDeserializerNode

Gson gson = new GsonBuilder()
    .registerTypeAdapter(Node.class, new NodeDeserializer())
    .create();

您将能够访问JsonElement解串器方法中的代表节点,将其转换为JsonObject,并检索指定类型的字段。然后,您可以Node基于该实例创建正确类型的实例。

2020-07-27