let*_*ive 2 jackson spring-boot java-time
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS")
private LocalDateTime accessStart;
private ZoneId accessStartZoneId;
Run Code Online (Sandbox Code Playgroud)
Jackson中是否有内置的模式映射器来映射包含java的JSON请求ZoneId?
{
"accessStart": "2017-10-10T10:10:10.100",
"accessStartZoneID": "Australia/Sydney"
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Spring Boot 1.5.4.RELEASE.如何配置解串器ZoneId?它适用于accessStart
JSON解析错误:无法构造java.time.ZoneId的实例:抽象类型要么需要映射到具体类型,要么具有自定义反序列化器,要么包含其他类型信息
我特别好奇你知道你为什么LocalDateTime一直在使用ZoneId.那岂不是更容易使用唯一的 ZonedDateTime?
在设计方面,ZonedDateTime是a LocalDateTime和a 的组合ZoneId.
ZoneId假设您仍想使用ZoneId,您可以编写自己的自定义(反)序列化程序.
或者,您可以将jackson-datatype-jsr310工件添加到依赖项:
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.9</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
然后JavaTimeModule在您的注册模块ObjectMapper:
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
Run Code Online (Sandbox Code Playgroud)
在Spring Boot应用程序中,您需要以下内容:
@Configuration
public class JacksonConfig {
@Bean
public ObjectMapper createObjectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
return mapper;
}
}
Run Code Online (Sandbox Code Playgroud)
ZoneId并且ZoneOffset,它实际上并不存储日期和时间,但仍然支持此模块.
| 归档时间: |
|
| 查看次数: |
2217 次 |
| 最近记录: |