我们有一个使用LocalDate定义的DTO:
@JsonProperty("dob")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
private LocalDate dob;
我们有一个ObjectMapper的代码,定义如下:
private static final ObjectMapper makeMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new ParameterNamesModule());
mapper.registerModule(new Jdk8Module());
mapper.registerModule(new JavaTimeModule());
return mapper;
}
我们在pom.xml文件中有所有的jackson-databindm内核jsr310:
<!-- Jackson JSON Mapping -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.8.8</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.8.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.8.8</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-parameter-names</artifactId>
<version>2.8.8</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jdk8</artifactId>
<version>2.8.8</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.8.8</version>
</dependency>
因此,当我将对象转换为JSON字符串时:
String json = makeMapper().writeValueAsString(myobject);
dob写入JSON字符串如下:
"出生日期":{"年份":1964年,"月":"二月","年表":{"日历类型":"iso8601","识别码":"ISO "},"月值":2、"月天数":13,"星期几":"星期四"、"时代":"CE"、"日期":44、"闰年":真}
将"出生日期"改为"1964 - 02 - 13",这是正确的。
所以,我不知道我是怎么做到的?
我想确保日期写得正确,这样我就可以重新解析回LocalDate。或者,有没有一种方法可以把现有的JSON(展开的)解析回LocalDate?
谢谢!
3条答案
按热度按时间8cdiaqws1#
结果发现这是ClassLoader的问题。在最小的情况下,代码正常工作,LocalDate相应地转换为JSON。当您将一个项目嵌入到另一个项目中时,所发生的情况是ObjectMapper在没有JavaTimeModule的其他地方定义。
我把代码:
把它带到我需要它的课堂上,这很有效。从不同的项目中访问实用程序对我来说不起作用。
希望这对其他人有帮助。
qeeaahzv2#
在
com.fasterxml.jackson.core:jackson-databind:2.9.7
中,可以使用以下代码实现LocalDate
变通方案:xv8emn3q3#
1.进口依赖度:jackson-数据类型-jsr310
1.编写扩展类:JsonJackson编解码器扩展
1.试验代码