springboot對ZonedDateTime返回結果json是string-源碼分析
- application/json格式默認使用ObjectMapper實例進行序列化
- ObjectMapper自動注入分析
- springboot關于jackson配置
java.time.ZonedDateTime
application/json格式默認使用ObjectMapper實例進行序列化
controller返回后,打斷點,可以看到,對應application/json,可以看到會選擇ObjectMapper進行轉化
converter: org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration.MappingJackson2HttpMessageConverterConfiguration#mappingJackson2HttpMessageConverter
ObjectMapper自動注入分析
具體看自動配置類:spring-boot-autoconfiguration.jar的org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration
相當于:
MAPPER.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
MAPPER.configure(SerializationFeature.WRITE_DURATIONS_AS_TIMESTAMPS, false);
所以springboot返回的時間默認不是long類型;
springboot關于jackson配置
1.配置文件:spring.jackson.time-zone=Asia/Shanghai
2.會注入到spring-boot-autoconfiguration.jar的JacksonProperties
以時區配置為例