springboot專案中jackson跟fastjson設定時區
阿新 • • 發佈:2022-04-22
import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.HttpMessageConverter; importorg.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import java.text.SimpleDateFormat; import java.util.List; import java.util.TimeZone; @Configurationpublic class CorsConfig2 implements WebMvcConfigurer { private static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedMethods("*") .allowedOrigins("*") .allowedHeaders("*"); } // 設定時區 (TimeZone是jdk自帶的時區類,這種方式可以用來設定fastjson、jackson的預設時區) // @PostConstruct // public void setTimeZone(){ // TimeZone timeZone = TimeZone.getTimeZone("UTC"); // TimeZone.setDefault(timeZone); // } // 設定時區 jackson 設定時區 系統統中就可以設定預設的序列化後格式 如想要返回 yyyy-MM-dd 只需要在 // jsonformat 註解上加 yyyy-MM-dd // spring.jackson.time-zone=GMT+8 @Bean public MappingJackson2HttpMessageConverter jackson2HttpMessageConverter() { MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); ObjectMapper mapper = new ObjectMapper(); mapper.setTimeZone(TimeZone.getDefault()); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); mapper.setDateFormat(new SimpleDateFormat(YYYY_MM_DD_HH_MM_SS)); converter.setObjectMapper(mapper); return converter; } @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { converters.add(jackson2HttpMessageConverter()); } // fastjson 設定不了時區 // @Bean // public HttpMessageConverters fastJsonConverters() { // FastJsonHttpMessageConverter fastJsonConverter = new FastJsonHttpMessageConverter(); // FastJsonConfig fastJsonConfig = new FastJsonConfig(); // fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); // fastJsonConverter.setFastJsonConfig(fastJsonConfig); // HttpMessageConverter<?> httpMessageConverter = fastJsonConverter; // return new HttpMessageConverters(httpMessageConverter); // } // // @Override // public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { // FastJsonHttpMessageConverter fastJsonConverter = new FastJsonHttpMessageConverter(); // FastJsonConfig fastJsonConfig = new FastJsonConfig(); // fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); // fastJsonConverter.setFastJsonConfig(fastJsonConfig); // //converters.add(fastJsonConverter);//這會讓fastJsonConverter排在訊息轉換器管道列表的最後,可能會輪不到它處理訊息轉換 // converters.add(0, fastJsonConverter);//要顯示指明將fastJsonConverter排在訊息轉換器管道列表的首位 // } }
springboot可以通過配置設定jackson時區和時間格式,參考類:org.springframework.boot.autoconfigure.jackson.JacksonProperties
例子:spring.jackson.time-zone=GMT+8
這個時區配置後,feign呼叫也沒有問題了。
轉載:https://blog.csdn.net/qq_36763236/article/details/111866828
TRANSLATE with x English TRANSLATE with EMBED THE SNIPPET BELOW IN YOUR SITE Enable collaborative features and customize widget: Bing Webmaster Portal Back