Java 具有继承和JsonDeserialize的Lombok

Java 具有继承和JsonDeserialize的Lombok,java,jackson,polymorphism,lombok,Java,Jackson,Polymorphism,Lombok,父类: @Data public class ParentDAO { @JsonDeserialize(using = CustomInstantDeserializer.class) private final Instant estimatedTimeOfBerthing; @JsonDeserialize(using = CustomInstantDeserializer.class) private final Instant actualTimeOfBe

父类:

@Data
public class ParentDAO {
    @JsonDeserialize(using = CustomInstantDeserializer.class)
    private final Instant estimatedTimeOfBerthing;
    @JsonDeserialize(using = CustomInstantDeserializer.class)
    private final Instant actualTimeOfBerthing;
}
儿童班:

@Data
public class ChildDAO extends ParentDAO {
    private final int countOfCnr1;
    private final int countOfCnr2;


    @Builder
    public Child(Instant estimatedTimeOfBerthing, Instant actualTimeOfBerthing,
                            int countOfCnr1, int countOfCnr2) {

        super(estimatedTimeOfBerthing, actualTimeOfBerthing);
        this.countOfCnr1= countOfCnr1;
        this.countOfCnr2= countOfCnr2;
    }
}
CustomInstantDeserializer类:

public class CustomInstantDeserializer extends JsonDeserializer<Instant> {
    @Override
    public Instant deserialize(JsonParser jsonparser, DeserializationContext context)
            throws IOException {
        return BpmsDateUtils.fromString(jsonparser.getText());
    }
}
在上面的场景中,我的API层正在从数据层(JSON)检索数据。 映射到
ParentDAO
没有问题,但是当映射到
ChildDAO
时,会引发以下异常->JSON解析错误:无法反序列化'java.time.Instant'类型的值。


我知道问题出在哪里->我正在向子构造函数传递一个
Instant
,而子构造函数不知道如何反序列化它。有人有什么想法或遇到过同样的问题吗?任何帮助都将不胜感激。

您是否尝试过将
@JsonDeserialize
放在
ChildDAO
构造函数参数上?在您的场景中,DAO是什么?在我看来,它像一个值对象,而不是一把刀。@JanRiekeTried,它不是work@MichaelPiefel很抱歉命名错误!我的供应商就这样离开了……我还没有改变it@DanialChan,您使用的是哪个版本的
Jackson
?您可以使用
JsonCreator
注释对构造函数进行注释,并检查以下问题:
{
"estimatedTimeOfBerthing": "2019-10-10T05:30:00+08:00",
"actualTimeOfBerthing": "2019-10-10T06:50:00+08:00",
"countOfCnr1":  30
"countOfCnr2":  40
}