【发布时间】:2020-11-06 17:54:19
【问题描述】:
我收到此错误(请注意,我们谈论的是 LocalDate,而不是 LocalDateTime):
com.fasterxml.jackson.databind.exc.InvalidDefinitionException:无法构造java.time.LocalDate 的实例(没有创建者,如默认构造,存在):没有字符串参数构造函数/工厂方法可以从字符串值反序列化( '2012-03-12')
我一直在寻找这个问题,并尝试了其他答案中经常提到的“技巧”,例如(我一直在尝试这些技巧中的一个,并且我一直在以不同的方式组合它们):
- 包括 com.fasterxml.jackson.datatype:jackson-datatype-jsr310
- 通过 bean 注册模块,告诉 Jackson ObjectMapper 使用 JavaTimeModule
- 尝试使用 jackson-module-kotlin
- 尝试来自 Jackson 的更多依赖项(不同组合)
- 将 spring 配置中的 write-dates-as-timestamps 设置为 false
- 将@JsonCreator 构造函数添加到数据类
我的 dto 数据类如下所示:
data class DateDto (
@JsonProperty("date")
@JsonDeserialize(using = LocalDateDeserializer::class)
@JsonSerialize(using = LocalDateSerializer::class)
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
val date : LocalDate
);
但是,这些技巧我没有运气,我不明白我做错了什么。
为什么这么难?我错过了一些非常明显的东西吗?我正在使用 Spring Boot 2.2.7、Kotlin 1.3.70、jackson-datatype-jsr310 2.11.1。
【问题讨论】:
-
不幸的是,添加 Visibility.ANY 没有区别
标签: java json spring-boot kotlin jackson