【问题标题】:Deserializing property LocalDate with swagger and jax-rs使用 swagger 和 jax-rs 反序列化属性 LocalDate
【发布时间】:2016-12-15 12:04:38
【问题描述】:

我的 REST 界面出现以下错误:

反序列化属性“calculationStartDate”的问题(预期类型: [简单类型,类 java.time.LocalDate];实际类型: org.joda.time.LocalDate)

这很奇怪,因为我根本没有使用 Joda 时间。我正在使用 Java 8 和 Java 8 DateTime API。

以下是相关实体类代码的快照:

@ApiModelProperty(
        value = "De datum waarvoor de berekening moet worden uitgevoerd.",
        required = true)
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonSerialize(using = LocalDateSerializer.class)
private LocalDate calculationStartDate;

这里是这个类的所有导入:

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,并在我的 pom.xml 中添加了 swagger 和 jackson-datatype-jsr310 的普通 Java EE 7 编码:

    <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>

【问题讨论】:

    标签: swagger fasterxml jsr310


    【解决方案1】:

    非常愚蠢。我导入了错误的反序列化器:

    import com.fasterxml.jackson.datatype.joda.deser.LocalDateDeserializer;
    

    当然应该是:

    import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
    

    问题解决了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-13
      • 2013-02-13
      • 2015-09-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-16
      • 1970-01-01
      相关资源
      最近更新 更多