如何使用兄弟对象的属性执行对象的JSON反序列化?

时间:2019-09-26 20:31:47

标签: java json jackson deserialization json-deserialization

我有一个课程 Transport.java

    public class Transport {
        private TransportDetails transportDetails;

        @JsonTypeInfo(use = Id.NAME, include = As.EXTERNAL_PROPERTY, property = "transportType")
            @JsonSubTypes({
                @Type(value = PublicTransport.class, name = "Public"),
                @Type(value = PrivateTransport.class, name = "Private")
            })
        private TransportMode transportMode;
        ...
    }

TransportDetails.java 的定义如下:

    public class TransportDetails {
        private String transportType;
        private String transportCost;
        private String transportDurationInMins;
        ...
    }

TransportMode.java 是一个接口

    public interface TransportMode {

    }

我有两个实现 TransportMode.java 接口的类 PublicTransport.java PrivateTransport.java

    public class PublicTransport implements TransportMode {
        private String origin;
        private String destination;
        private String carryingCapacity;
        ...
    }
    public class PrivateTransport implements TransportMode {
        private String brand;
        private String model;
        private String insuranceStatus;
        ...
    }
TransactionDetails.java 中的

transactionType 可以是 Public Private 。完成。

{"transportDetails":{"transportDurationInMins":"45","transportCost":"20","transportType":"Private"},"transportMode":{"model":"car model","insuranceStatus":"Full","brand":"car brand"}}

在尝试将上述JSON反序列化为Transport对象时,出现以下错误:

  

意外的令牌(END_OBJECT),预期值VALUE_STRING:需要包含ID类型的JSON字符串

有什么方法可以访问 Transport.java 类中的 transactionType 来执行反序列化?

0 个答案:

没有答案