如何在 Spring Boot Jackson Date 序列化中应用默认时区
How to make default time zone apply in Spring Boot Jackson Date serialization
我已将 Spring 启动应用程序配置为将日期序列化为 ISO8601 字符串:
spring:
jackson:
serialization:
write-dates-as-timestamps: false
这就是我得到的:
"someDate": "2017-09-11T07:53:27.000+0000"
然而我的时区是Europe/Madrid。事实上,如果我打印 TimeZone.getDefault()
这就是我得到的。
如何让 Jackson 使用实际时区序列化这些日期时间值?格林威治标准时间+2
"someDate": "2017-09-11T09:53:27.000+0200"
解决了注册 Jackson2ObjectMapperBuilderCustomizer bean 的问题:
@Bean
public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization() {
return jacksonObjectMapperBuilder ->
jacksonObjectMapperBuilder.timeZone(TimeZone.getDefault());
}
您可以通过将此添加到配置来为整个应用程序设置时区 class:
@PostConstruct
void started() {
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
}
我发现自己遇到了同样的问题。
就我而言,我的应用程序只有一个时区,然后添加:
spring.jackson.time-zone: America/Sao_Paulo
在我的 application.properties
中解决了问题。
有两种解决方案:
1.添加JSON格式注释
@JsonFormat(shape = JsonFormat.Shape.STRING, timezone = "Asia/Kolkata")
private Date insertionTime;
2。将杰克逊时区添加到属性 (spring boot)
spring.jackson.time-zone: America/Sao_Paulo
参考: https://www.baeldung.com/spring-boot-formatting-json-dates
我已将 Spring 启动应用程序配置为将日期序列化为 ISO8601 字符串:
spring:
jackson:
serialization:
write-dates-as-timestamps: false
这就是我得到的:
"someDate": "2017-09-11T07:53:27.000+0000"
然而我的时区是Europe/Madrid。事实上,如果我打印 TimeZone.getDefault()
这就是我得到的。
如何让 Jackson 使用实际时区序列化这些日期时间值?格林威治标准时间+2
"someDate": "2017-09-11T09:53:27.000+0200"
解决了注册 Jackson2ObjectMapperBuilderCustomizer bean 的问题:
@Bean
public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization() {
return jacksonObjectMapperBuilder ->
jacksonObjectMapperBuilder.timeZone(TimeZone.getDefault());
}
您可以通过将此添加到配置来为整个应用程序设置时区 class:
@PostConstruct
void started() {
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
}
我发现自己遇到了同样的问题。 就我而言,我的应用程序只有一个时区,然后添加:
spring.jackson.time-zone: America/Sao_Paulo
在我的 application.properties
中解决了问题。
有两种解决方案:
1.添加JSON格式注释
@JsonFormat(shape = JsonFormat.Shape.STRING, timezone = "Asia/Kolkata")
private Date insertionTime;
2。将杰克逊时区添加到属性 (spring boot)
spring.jackson.time-zone: America/Sao_Paulo
参考: https://www.baeldung.com/spring-boot-formatting-json-dates