0

我需要反序列化一个复杂的多态对象,并且内部也会有其他多态对象。如何使用 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)
4

0 回答 0