Java 8异常:com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer没有默认(无参数)构造函数

Java 8异常:com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer没有默认(无参数)构造函数,java,json,jackson,fasterxml,jsr310,Java,Json,Jackson,Fasterxml,Jsr310,我有一个模型类,它有一个字段: @JsonDeserialize(using = InstantDeserializer.class) @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ") private OffsetDateTime offsetDt; 当此型号的请求发送到服务器时,我的控制器会引发异常: Caused by: java.lang.IllegalArgumentException: Class com.fasterxm

我有一个模型类,它有一个字段:

 @JsonDeserialize(using = InstantDeserializer.class)
 @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ")
 private OffsetDateTime offsetDt;
当此型号的请求发送到服务器时,我的控制器会引发异常:

Caused by: java.lang.IllegalArgumentException: 
Class com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer 
has no default (no arg) constructor
pom.xml具有版本2.8.11的依赖性:

 <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-jsr310</artifactId>
    </dependency>

我知道这是由于@JsonDeserialize不需要arg构造函数造成的,但是有解决方法吗?非常感谢。

错误说明您需要一个没有参数构造函数的类,因此您可以从InstantDeserializer进行扩展。以super的参数中的代码为例


错误表明您需要一个没有参数构造函数的类,因此可以从InstantDeserializer进行扩展。以super的参数中的代码为例


InstantDeserializer.class是自定义反序列化器类?,如果我相信该类,您可以声明一些没有参数的参数构造函数constructor@Deadpool不,它不是自定义类。。com.fasterxml.jackson.datatype.jsr310.desert您的POM是什么样子的?看看这个答案,您需要一个构造函数不带参数的类,这样您就可以扩展InstantDeserializer来创建自己的类。关于参数,请看一下这个InstantDeserializer.class是自定义反序列化器类吗?,如果我相信这个类,你可以声明一些没有参数的参数构造函数constructor@Deadpool不,它不是自定义类。。com.fasterxml.jackson.datatype.jsr310.dester您的POM是什么样子的?看看这个答案,您需要一个没有参数的构造函数的类,这样您就可以扩展InstantDeserializer来创建自己的类了。关于参数,请看这个
public class DefaultInstantDeserializer extends InstantDeserializer<OffsetDateTime> {
    public DefaultInstantDeserializer() {
        super(OffsetDateTime.class, DateTimeFormatter.ISO_OFFSET_DATE_TIME,
                OffsetDateTime::from,
                a -> OffsetDateTime.ofInstant(Instant.ofEpochMilli(a.value), a.zoneId),
                a -> OffsetDateTime.ofInstant(Instant.ofEpochSecond(a.integer, a.fraction), a.zoneId),
                (d, z) -> d.withOffsetSameInstant(z.getRules().getOffset(d.toLocalDateTime())),
                true);
    }
}
@JsonDeserialize(using = DefaultInstantDeserializer.class)