使用postman 測試時,返回的數據少了8小時。
在調試中,測試數據是正確的,包括接口返回也是正確的。
很明顯在轉json時出了問題。
先說一下,不要使用jackson來作為json組件。
先說一下,不要使用jackson來作為json組件。
先說一下,不要使用jackson來作為json組件。
(文末,我會說明)
解決方案:
使用了 fastjson
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.76</version> </dependency>
進行如下配置(不要的,自己刪除)
package com.tenyears.common.config; import com.alibaba.fastjson.serializer.SerializeConfig; import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson.serializer.ToStringSerializer; import com.alibaba.fastjson.support.config.FastJsonConfig; import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; import org.springframework.boot.autoconfigure.http.HttpMessageConverters; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.MediaType; import org.springframework.http.converter.HttpMessageConverter; import java.math.BigInteger; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; /** * @description : * @auther Tyler * @date 2021/8/6 */ @Configuration public class FastJSONConfig { @Bean public HttpMessageConverters httpMessageConverters() { HttpMessageConverter<?> fastjson = fastJsonHttpMessageConverter(); return new HttpMessageConverters(fastjson); } @Bean public FastJsonHttpMessageConverter fastJsonHttpMessageConverter() { FastJsonHttpMessageConverter messageConverter = new FastJsonHttpMessageConverter(); //set MediaTypes List<MediaType> supportedMediaTypes = new ArrayList<MediaType>(); supportedMediaTypes.add(MediaType.APPLICATION_JSON); supportedMediaTypes.add(MediaType.TEXT_HTML); supportedMediaTypes.add(MediaType.TEXT_PLAIN); messageConverter.setSupportedMediaTypes(supportedMediaTypes); //fastJsonConfig FastJsonConfig fastJsonConfig = new FastJsonConfig(); //時區 fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss"); fastJsonConfig.setCharset(Charset.forName("UTF-8")); fastJsonConfig.setSerializerFeatures( SerializerFeature.QuoteFieldNames, // 雙引號 SerializerFeature.WriteMapNullValue, // 輸入空值字段 SerializerFeature.WriteEnumUsingToString, // 枚舉輸出STRING SerializerFeature.WriteNullBooleanAsFalse, // 布爾類型如果為null輸出false SerializerFeature.WriteNullListAsEmpty, // List字段如果為null輸出為[] //SerializerFeature.WriteNullNumberAsZero, // number類型如果為null輸出0 //SerializerFeature.WriteNullStringAsEmpty, // 字符串類型如果為null輸出"" SerializerFeature.SortField, // 按字段名稱排序后進行輸出 SerializerFeature.WriteDateUseDateFormat); // 設置日期格式 //SerializeConfig SerializeConfig config =new SerializeConfig(); //Long -> String ,前端無法接收Long config.put(Long.class , ToStringSerializer.instance); config.put(Long.TYPE , ToStringSerializer.instance); //BigInteger -> String ,前端無法接收BigInteger config.put(BigInteger.class , ToStringSerializer.instance); fastJsonConfig.setSerializeConfig(config); messageConverter.setFastJsonConfig(fastJsonConfig); return messageConverter; } }
最后說一下
為什么不用jackson?
一,配置過jackson的時區問題。
jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: Asia/Shanghai
二,問題
配置jackson后,
postman無法傳入 短日期格式 2021-02-03。
必須要 2021-02-03 00:00:00,否則直接bad request!