MyJsonConfig.java 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package com.ims.eval.config;
  2. import com.alibaba.fastjson.serializer.NameFilter;
  3. import com.alibaba.fastjson.serializer.SerializeConfig;
  4. import com.alibaba.fastjson.serializer.SerializerFeature;
  5. import com.alibaba.fastjson.support.config.FastJsonConfig;
  6. import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
  7. import org.springframework.context.annotation.Configuration;
  8. import org.springframework.http.MediaType;
  9. import org.springframework.http.converter.HttpMessageConverter;
  10. import org.springframework.http.converter.StringHttpMessageConverter;
  11. import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
  12. import java.nio.charset.Charset;
  13. import java.util.ArrayList;
  14. import java.util.List;
  15. import java.util.TimeZone;
  16. /**
  17. * @description:
  18. * @auther: xugp
  19. * @date: 2023-03-07
  20. */
  21. @Configuration
  22. public class MyJsonConfig implements WebMvcConfigurer {
  23. //springboot 默认通过jackson来转化json,@JSONField(....)是fastjson的注解,因此要添加如下配置
  24. //Long类型在前端js中会丢失精度
  25. public FastJsonHttpMessageConverter fastJsonHttpMessageConverters() {
  26. TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
  27. FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
  28. FastJsonConfig fastJsonConfig = new FastJsonConfig();
  29. NameFilter nameFilter = (object, name, value) -> name;
  30. SerializeConfig serializeConfig = fastJsonConfig.getSerializeConfig();
  31. // serializeConfig .addFilter(SwaggerWelcomeWebMvc.class, nameFilter);
  32. // serializeConfig.put(String.class,MyStringSerializer.instance);
  33. fastJsonConfig.setSerializeConfig(serializeConfig);
  34. fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss"); //自定义时间格式
  35. fastJsonConfig.setSerializerFeatures(
  36. SerializerFeature.DisableCircularReferenceDetect
  37. ,SerializerFeature.WriteMapNullValue
  38. ,SerializerFeature.WriteDateUseDateFormat
  39. ); //关闭循环引用,正常转换null值,格式化
  40. fastConverter.setFastJsonConfig(fastJsonConfig);
  41. List<MediaType> fastMediaTypes = new ArrayList<>();
  42. fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
  43. fastConverter.setSupportedMediaTypes(fastMediaTypes);
  44. // HttpMessageConverter<?> converter = fastConverter;
  45. return fastConverter;
  46. }
  47. public HttpMessageConverter<String> stringConverter() {
  48. StringHttpMessageConverter converter = new StringHttpMessageConverter(
  49. Charset.forName("UTF-8"));
  50. return converter;
  51. }
  52. @Override
  53. public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
  54. // converters.clear();
  55. converters.add(stringConverter());
  56. // List<HttpMessageConverter<?>> collect = converters.stream().filter(s ->s instanceof StringHttpMessageConverter).collect(Collectors.toList());
  57. // converters.removeAll(collect);
  58. converters.add( fastJsonHttpMessageConverters());
  59. }
  60. }