package com.dy.common.fastjson; import com.alibaba.fastjson2.JSONWriter; import com.alibaba.fastjson2.support.spring6.http.converter.FastJsonHttpMessageConverter; import org.springframework.context.annotation.Configuration; import org.springframework.http.MediaType; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; @Configuration public class FastJsonConfig implements WebMvcConfigurer { /** * 配置fastjson输出格式 **/ @Override public void configureMessageConverters(List> converters) { // 1. 配置fastjson com.alibaba.fastjson2.support.config.FastJsonConfig config = new com.alibaba.fastjson2.support.config.FastJsonConfig(); config.setDateFormat("yyyy-MM-dd HH:mm:ss"); config.setCharset(StandardCharsets.UTF_8); config.setWriterFeatures( //输出map中value为null的数据 JSONWriter.Feature.WriteMapNullValue, //输出null的boolean 为 false JSONWriter.Feature.WriteNullBooleanAsFalse, //把Long型输出为String //JSONWriter.Feature.WriteLongAsString, //输出null的list 为 [] JSONWriter.Feature.WriteNullListAsEmpty, //输出null的number 为 0 JSONWriter.Feature.WriteNullNumberAsZero, //输出null字符串 为 "" JSONWriter.Feature.WriteNullStringAsEmpty, //对map进行排序 JSONWriter.Feature.MapSortField, //json格式化 JSONWriter.Feature.PrettyFormat ); // 2. 添加fastjson转换器 FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter(); converter.setDefaultCharset(StandardCharsets.UTF_8); // 3. 添加支持的媒体类型 List supportedMediaTypes = new ArrayList<>(); supportedMediaTypes.add(MediaType.APPLICATION_JSON); supportedMediaTypes.add(MediaType.APPLICATION_ATOM_XML); supportedMediaTypes.add(MediaType.APPLICATION_FORM_URLENCODED); supportedMediaTypes.add(MediaType.APPLICATION_OCTET_STREAM); supportedMediaTypes.add(MediaType.APPLICATION_PDF); supportedMediaTypes.add(MediaType.APPLICATION_RSS_XML); supportedMediaTypes.add(MediaType.APPLICATION_XHTML_XML); supportedMediaTypes.add(MediaType.APPLICATION_XML); supportedMediaTypes.add(MediaType.IMAGE_GIF); supportedMediaTypes.add(MediaType.IMAGE_JPEG); supportedMediaTypes.add(MediaType.IMAGE_PNG); supportedMediaTypes.add(MediaType.TEXT_EVENT_STREAM); supportedMediaTypes.add(MediaType.TEXT_HTML); supportedMediaTypes.add(MediaType.TEXT_MARKDOWN); supportedMediaTypes.add(MediaType.TEXT_PLAIN); supportedMediaTypes.add(MediaType.TEXT_XML); converter.setSupportedMediaTypes(supportedMediaTypes); //4 将convert添加到converters converter.setFastJsonConfig(config); converters.add(0,converter); } }