FastJson设置是否保留为null的字段

FastJson介绍

fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean

最近项目中用到了FastJson,但是在操作的时候发现fastJson会对null值进行自动过滤,但是项目中需要保留null值,所以在此记录一下。

public static void main(String[] args) {
        Map<String,Object> data =  new HashMap<>();
        data.put("age",20);
        data.put("name","cao");
        data.put("sex",null);

        String jstr = JSON.toJSONString(data);
        System.err.println(jstr);
    }
输出结果为:
	{"name":"cao","age":20}

方案一

在转json时进行设置

public static void main(String[] args) {
        Map<String,Object> data =  new HashMap<>();
        data.put("age",20);
        data.put("name","cao");
        data.put("sex",null);

        String jstr = JSON.toJSONString(data, SerializerFeature.WriteMapNullValue);
        System.err.println(jstr);
    }
输出结果为:
	{"sex":null,"name":"cao","age":20}

方案二

对全局进行设置,在springboot启动类上加上如下代码:

	/**
     * 替换springboot默认的jackjson解析工具,使用fastjson进行解析json对象到前台
     *
     * @return HttpMessageConverters
     */
    @Bean
    public HttpMessageConverters fastJsonHttpMessageConverters() {
        // 1.需要定义一个convert转换消息的对象;
        FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
        // 2:添加fastJson的配置信息;
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat,
                SerializerFeature.DisableCircularReferenceDetect, SerializerFeature.WriteMapNullValue,
                SerializerFeature.WriteNullStringAsEmpty, SerializerFeature.WriteNullListAsEmpty);
        // 3处理中文乱码问题
        List<MediaType> fastMediaTypes = new ArrayList<>();
        fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
        // 4.在convert中添加配置信息.
        fastJsonHttpMessageConverter.setSupportedMediaTypes(fastMediaTypes);
        fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
        HttpMessageConverter<?> converter = fastJsonHttpMessageConverter;
        return new HttpMessageConverters(converter);

    }