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<HttpMessageConverter<?>> 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<MediaType> 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); 
 | 
    } 
 | 
} 
 |