我正在为payara-micro构建一个应用程序。我需要将Json字符串转换为扩展超类的对象。我遇到的问题是父字段和子字段都没有填充,并且创建的实例不是子类类型:
例如,Person有一个Vehicle列表(子类型:Bike,Bus,...)
{
name: "John",
vehicles: [
{
type: "bike",
doors: 5
}
]
}这个json的结果对象将是一个填充了name的Person对象,以及一个包含一个元素的Vehicle列表,但该元素的类型将为Vehicle,并且Vehicle中的所有字段都没有值。
Jsonb jsonb = JsonbBuilder.create();
Person person = jsonb.fromJson(jsonString, Person.class);发布于 2020-05-23 19:16:27
不幸的是,您正在寻找的功能不是Yasson (也不是JSON-B)的一部分。规范没有明确提到这一点,但User Guide on Serializers/Deserializers暗示了这一点(强调我的):
让我们来看一下样本。想象一下,我们想要序列化和反序列化宠物载体列表。由抽象类Animal定义的携带宠物。它可以是它的任何子类。我们希望正确地序列化和反序列化它。为了做到这一点,我们需要在文档中保留一个类型信息,并在反序列化时使用它。可以使用自定义序列化程序/反序列化程序对来完成此操作。
该示例包含一个自定义的序列化程序/反序列化程序,它应该会得到所需的结果,但您必须自己实现这个自定义的序列化程序/反序列化程序。
https://stackoverflow.com/questions/61727513
复制相似问题