我需要反序列化一个复杂的多态对象,并且内部也会有其他多态对象。如何使用 JSON-B 实现这一目标?它真的需要在 JSON-B 中......
例子:
车辆(来自抽象类的多态)
它内部包含其他多态对象。
我试图做与此类似的事情:
public class XPTODeserializer implements JsonbDeserializer<XPTOClass> {
@Override
public XPTOClass deserialize(JsonParser parser, DeserializationContext context, Type rtType) {
JsonObject jsonObj = parser.getObject();
String _class = jsonObj.getString("@type");
switch (_class) {
case "Vehicle":
return context.deserialize(Vehicle.class, parser);
...
}
如果我这样做,它将正确获取 Vehicle 对象,但它会在第二次进入时抛出此问题:
2021 年 26 月 26 日上午 10:13:01 org.eclipse.yasson.internal.Unmarshaller deserializeItem 严重:空
javax.json.bind.JsonbException: Internal error: null
at org.eclipse.yasson.internal.Unmarshaller.deserializeItem(Unmarshaller.java:72)
at org.eclipse.yasson.internal.Unmarshaller.deserialize(Unmarshaller.java:52)
at org.eclipse.yasson.internal.JsonBinding.deserialize(JsonBinding.java:59)
at org.eclipse.yasson.internal.JsonBinding.fromJson(JsonBinding.java:66)