【发布时间】:2017-11-04 06:51:39
【问题描述】:
我们有一个使用 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-datababindm 核心、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 字符串写入为:
"dob":{ “年”:1964年, “月”:“二月”, “年表”:{ “日历类型”:“iso8601”, “id”:“ISO” }, “月值”:2, "dayOfMonth": 13, "dayOfWeek": "星期四", “时代”:“CE”, "dayOfYear": 44, “闰年”:真}
而不是:"dob":"1964-02-13" 这是正确的。
所以,我不确定我是如何做到这一点的?
我想确保写出的日期是正确的,所以我可以重新解析回 LocalDate。或者,有没有办法可以获取现有的 JSON(扩展)并将其解析回 LocalDate?
谢谢!
【问题讨论】:
-
您在使用 JAX-RS 及其实现之一吗?
-
我在
pom.xml中使用这些依赖项在一个新项目中试用了您的代码,它运行良好。如果我没有注册JavaTimeModule,我只能看到你看到的输出。我建议您查看项目中可能包含的其他配置或包含dob字段的类中的其他注释 -
我们使用的是 Spring-WS,而不是我知道的任何 JAX-RS。
-
我们绝对是在将 JavaTimeModule 添加到我们的 ObjectMapper 中。定义和我们上面描述的一样。我一定会继续调查的。
标签: json java-8 jackson-modules jackson2