我正在努力解决问题中提到的问题。
我需要创建一些自定义反序列化器,它或多或少是从标准反序列化器进行类型转换的(原因是ZonedDateTime
正在为我的输入工作,但我不想将类型更改为ZonedDateTime
,但保留LocalDateTime
).
基本上我想在解串器中做的是:
- 反序列化使用
ZonedDateTime
解串器(我发现实际上是自定义的InstantDeserializer
)
- Use
.toLocalDateTime
并归还它。
我该如何使用它?
我试图找到它,但找不到。
@JsonDeserialize 用于指示使用自定义反序列化器
public class Event {
public String name;
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime date;
}
自定义解串器如下:
public class LocalDateTimeDeserializer extends JsonDeserializer<LocalDateTime> {
@Override
public LocalDateTime deserialize(JsonParser jsonparser, DeserializationContext context)
throws IOException, JsonProcessingException {
String date = jsonparser.getText();
JavaTimeModule javaTimeModule = new JavaTimeModule();
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(javaTimeModule);
ZonedDateTime zonedDateTime = mapper.readValue(date, ZonedDateTime.class);
return zonedDateTime.toLocalDateTime();
}
}
该demo可以在github上访问 https://github.com/xmeng1/jackson-test
Maven 依赖
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.8.5</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.8.5</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.datatype/jackson-datatype-jsr310 -->
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.8.9</version>
</dependency>
</dependencies>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)