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)