当我们在进行项目的时候,当我们向一个接口发送请求的时候,往往会传进去很多的参数,会出现部分参数是null的情况。下面我给大家举个例子!
这是未处理的情况下!当我们发送一个请求以后,响应回来的数据如下!
我们会发现响应回来的json数据有许多的null。这样前端拿到的数据会很头疼,而且自己看着也难受。
那么我们如何避免这种情况呢? 下面我来给大家演示一下解决方法!
首先我我们先定义一个全局处理的配置类
注意一定要加@Configuration 注解
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import java.util.List;
/**
* mvc的全局处理
*/
@Configuration
public class GlobalConfig extends WebMvcConfigurationSupport {
@Override
protected void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
super.configureMessageConverters(converters);
converters.add(mappingJackson2HttpMessageConverter());
}
private MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(){
ObjectMapper objectMapper=new ObjectMapper();
objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS,false);
//把所有null都隐藏掉
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
MappingJackson2HttpMessageConverter converter=new MappingJackson2HttpMessageConverter(objectMapper);
return converter;
}
}
在如上代码中
ObjectMapper
通常是指Jackson库中的一个类,它用于在Java对象(POJO,Plain Old Java Objects)和JSON之间进行相互转换。Jackson是一个流行的Java库,用于处理JSON数据,其中ObjectMapper
是其核心类之一。
使用ObjectMapper
,你可以将Java对象序列化为JSON字符串(称为"写入"或"序列化"),也可以将JSON字符串反序列化为Java对象(称为"读取"或"反序列化")。这对于在Java应用程序中处理JSON数据非常有用,例如在与Web服务通信时,或者在持久化数据时将Java对象转换为JSON格式。
我们只需要调用objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);,就会解决以上的问题。
然后我们再启动SpringBoot项目,发送请求,响应回来的数据如下:
是不是感觉更加简洁了!
希望大家多多关注我,我会持续更新Spring Boot项目中的干货,有什么不足的欢迎评论区留言和私信留言!第一时间回复,关注我 送Java学习资料以及干货!!!