使用swagger和jax-rs反序列化属性LocalDate



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

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

问题解决了!

相关内容

  • 没有找到相关文章

最新更新