【问题标题】:Spring Jackson java.time Deserialization: arguments mismatchedSpring Jackson java.time 反序列化:参数不匹配
【发布时间】:2018-05-19 11:56:55
【问题描述】:

如何反序列化 Java 8 time API 类?

这是我所做的:

包含的依赖:compile("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")

要反序列化的请求体:

import com.fasterxml.jackson.annotation.JsonFormat;
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;

public class TestRequest {
    @JsonSerialize(using = LocalDateSerializer.class)
    @JsonDeserialize(using = LocalDateDeserializer.class)
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "YYYY-MM-dd")
    LocalDate localDate;
}

弹簧控制器:

public ResponseEntity test(@RequestBody TestRequest testRequest) {
    return ResponseEntity.ok(testRequest);
}

JSON 请求正文:

{ "localDate": "2017-11-01" }

例外:

com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of TestRequest, problem: argument type mismatch

【问题讨论】:

    标签: json spring java-8 jackson


    【解决方案1】:

    您应该使用 jackson-modules-java8 而不是 jackson-datatype-jsr310 来序列化或反序列化 java 8 类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-11
      • 2017-03-22
      • 2018-07-20
      • 1970-01-01
      • 2019-04-03
      • 2015-10-17
      • 2017-07-04
      • 2023-04-09
      相关资源
      最近更新 更多