我需要使用Gson Java库反序列化对象的深层次结构。
我尝试过使用json extras中的RuntimeTypeAdapterFactory,但是它似乎无法正常工作,因为我希望注册类型不是基本类型的直接后代。
以下是展示我的等级结构的示例:
interface Base {
}
interface NormalChild extends Base {
}
class SpecialChild implements Base {
}
class Child1 implements NormalChild {
}
class Child2 implements NormalChild {
}
// etc...
这是反序列化器:
class Deserializer {
private Gson GSON = new GsonBuilder().registerTypeAdapterFactory(RuntimeTypeAdapterFactory.of(Base.class, "type")
.registerSubtype(SpecialChild.class)
.registerSubtype(Child1.class)
.registerSubtype(Child2.class)
// etc...
)
.create();
public Base deserialize(JsonElement json) {
return GSON.fromJson(json, Base.class);
}
}
我收到与“ NormalChild”的构造函数有关的错误消息,该消息无法调用(因为NormalChild确实是一个接口)。但是我将如何实现仅注册具体类型的预期功能?