使用 swagger 和 jax-rs 反序列化 属性 LocalDate
Deserializing property LocalDate with swagger and jax-rs
我的 REST 界面出现以下错误:
Problem deserializing property 'calculationStartDate' (expected type:
[simple type, class java.time.LocalDate]; actual type:
org.joda.time.LocalDate)
这很奇怪,因为我根本没有使用 Joda 时间。我正在使用 Java 8 和 Java 8 DateTime API.
这是有问题的实体 class 代码的截图:
@ApiModelProperty(
value = "De datum waarvoor de berekening moet worden uitgevoerd.",
required = true)
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonSerialize(using = LocalDateSerializer.class)
private LocalDate calculationStartDate;
下面是这个 class 的所有导入:
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.joda.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.time.LocalDate;
import javax.xml.bind.annotation.XmlRootElement;
那么为什么我会在响应正文中收到此错误???
我正在使用 WildFly 10,将原来的 FasterXML (2.5.4) 替换为 FasterXML 2.6.3,并使用纯 Java EE 7 编码,并在我的 pom.xml
:
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-jaxrs</artifactId>
<version>1.5.9</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.6.3</version>
</dependency>
非常愚蠢。我导入了错误的解串器:
import com.fasterxml.jackson.datatype.joda.deser.LocalDateDeserializer;
当然应该是:
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
问题已解决!
我的 REST 界面出现以下错误:
Problem deserializing property 'calculationStartDate' (expected type: [simple type, class java.time.LocalDate]; actual type: org.joda.time.LocalDate)
这很奇怪,因为我根本没有使用 Joda 时间。我正在使用 Java 8 和 Java 8 DateTime API.
这是有问题的实体 class 代码的截图:
@ApiModelProperty(
value = "De datum waarvoor de berekening moet worden uitgevoerd.",
required = true)
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonSerialize(using = LocalDateSerializer.class)
private LocalDate calculationStartDate;
下面是这个 class 的所有导入:
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.joda.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.time.LocalDate;
import javax.xml.bind.annotation.XmlRootElement;
那么为什么我会在响应正文中收到此错误???
我正在使用 WildFly 10,将原来的 FasterXML (2.5.4) 替换为 FasterXML 2.6.3,并使用纯 Java EE 7 编码,并在我的 pom.xml
:
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-jaxrs</artifactId>
<version>1.5.9</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.6.3</version>
</dependency>
非常愚蠢。我导入了错误的解串器:
import com.fasterxml.jackson.datatype.joda.deser.LocalDateDeserializer;
当然应该是:
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
问题已解决!