SPRINGBOOT返回数据NULL参数设为空字符串或空数组
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