美文网首页
SPRINGBOOT返回数据NULL参数设为空字符串或空数组

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

作者: 万事俱备就差一个程序员了 | 来源:发表于2022-05-26 22:34 被阅读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

    相关文章

      网友评论

          本文标题:SPRINGBOOT返回数据NULL参数设为空字符串或空数组

          本文链接:https://www.haomeiwen.com/subject/qsbpprtx.html