cod*_*ent 17 spring spring-mvc jackson spring-boot jackson2
我已将Spring Boot应用程序配置为将日期序列化为ISO8601字符串:
spring:
jackson:
serialization:
write-dates-as-timestamps: false
Run Code Online (Sandbox Code Playgroud)
这就是我得到的:
"someDate": "2017-09-11T07:53:27.000+0000"
Run Code Online (Sandbox Code Playgroud)
不过我的时区是欧洲/马德里.事实上,如果我打印TimeZone.getDefault()
这是我得到的.
如何让杰克逊使用实际时区序列化这些日期时间值?GMT + 2
"someDate": "2017-09-11T09:53:27.000+0200"
Run Code Online (Sandbox Code Playgroud)
bar*_*ini 22
您可以为整个应用程序设置时区,并将其添加到配置类:
@PostConstruct
void started() {
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
}
Run Code Online (Sandbox Code Playgroud)
Jau*_*era 22
我发现自己遇到了同样的问题.就我而言,我的应用只有一个时区,然后添加:
spring.jackson.time-zone: America/Sao_Paulo
Run Code Online (Sandbox Code Playgroud)
在我application.properties
解决了这个问题.
资料来源:https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html#JACKSON
cod*_*ent 17
解决了注册Jackson2ObjectMapperBuilderCustomizer bean的问题:
@Bean
public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization() {
return jacksonObjectMapperBuilder ->
jacksonObjectMapperBuilder.timeZone(TimeZone.getDefault());
}
Run Code Online (Sandbox Code Playgroud)
对此有两种解决方案:
1.添加JSON格式注释
@JsonFormat(shape = JsonFormat.Shape.STRING, timezone = "Asia/Kolkata")
private Date insertionTime;
Run Code Online (Sandbox Code Playgroud)
2.将Jackson时区添加到属性中(spring boot)
spring.jackson.time-zone: America/Sao_Paulo
Run Code Online (Sandbox Code Playgroud)
参考: https: //www.baeldung.com/spring-boot-formatting-json-dates
归档时间: |
|
查看次数: |
25946 次 |
最近记录: |