SPRINGBOOT返回数据NULL参数设为空字符串或空数组

2022-05-26  本文已影响0人  万事俱备就差一个程序员了

https://www.cnblogs.com/jthr/p/15825435.html

SPRINGBOOT返回数据NULL参数设为空字符串或空数组

package com.ruoyi.framework.config.ResponseVoConfig.WebConfig;/**

* @Classname MyJsonMapper

* @Description TODO

* @Date 2022/1/20 0020 上午 10:39

* @Created by jcc

*/import com.fasterxml.jackson.core.JsonGenerator;

import com.fasterxml.jackson.databind.JsonSerializer;

import com.fasterxml.jackson.databind.ObjectMapper;

import com.fasterxml.jackson.databind.SerializerProvider;

import com.fasterxml.jackson.databind.module.SimpleModule;

import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;

import java.io.IOException;

import java.lang.reflect.Field;

import java.text.SimpleDateFormat;

import java.util.List;

import java.util.Map;

import java.util.Objects;

import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;/**

* jackson 定制

*

* @author lqq

*/publicclass MyJsonMapper extends ObjectMapper {

    public MyJsonMapper() {

        super();

        //收到未知属性时不报异常this.configure(FAIL_ON_UNKNOWN_PROPERTIES,false);

        //Long类型转为String类型SimpleModule simpleModule =new SimpleModule();

        //simpleModule.addSerializer(Long.class, ToStringSerializer.instance);

        //simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);

        this.registerModule(simpleModule);

        this.setDateFormat(newSimpleDateFormat("yyyy-MM-dd HH:mm:ss")); //设置日期格式

        //处理空指针时设置的值this.getSerializerProvider().setNullValueSerializer(newJsonSerializer() {

            @Override

            publicvoid serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException {

                String fieldName = gen.getOutputContext().getCurrentName();

                try {

                    //反射获取字段类型Field field = gen.getCurrentValue().getClass().getDeclaredField(fieldName);

                    if(Objects.equals(field.getType(), String.class)) {

                        //字符串型空值""gen.writeString("");

                        return;

                    } elseif(Objects.equals(field.getType(), List.class)) {

                        //列表型空值返回[]                        gen.writeStartArray();

                        gen.writeEndArray();

                        return;

                    } elseif(Objects.equals(field.getType(), Map.class)) {

                        //map型空值返回{}                        gen.writeStartObject();

                        gen.writeEndObject();

                        return;

                    }

                } catch (NoSuchFieldException e) {

                }

                //默认返回""gen.writeString("");

            }

        });

    }

}

package com.ruoyi.framework.config.ResponseVoConfig.WebConfig;/**

* @Classname WebConfig

* @Description TODO

* @Date 2022/1/20 0020 上午 10:39

* @Created by jcc

*/import org.springframework.context.annotation.Configuration;

import org.springframework.http.converter.HttpMessageConverter;

import org.springframework.http.converter.StringHttpMessageConverter;

import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;

import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

import java.util.List;/**

* web 相关配置

*

* @author lqq

*/@Configurationpublicclass WebConfig extends WebMvcConfigurationSupport {

    @Override

    publicvoidconfigureMessageConverters(List> converters) {

        //在json转换之前先进行string转换converters.add(new StringHttpMessageConverter());

        //添加json转换MappingJackson2HttpMessageConverter jackson2HttpMessageConverter =new MappingJackson2HttpMessageConverter();

        jackson2HttpMessageConverter.setObjectMapper(new MyJsonMapper());

        converters.add(jackson2HttpMessageConverter);

        //5、追加默认转换器        super.addDefaultHttpMessageConverters(converters);

    }

}

分类: springboot

上一篇下一篇

猜你喜欢

热点阅读