spring boot 下对JSON返回值去除null和空字段操作
在开发过程中,我们需要统一返回前端json格式的数据,但有些接口的返回值存在null或者""这种没有意义的字段。
不仅影响理解,还浪费带宽,这时我们可以统一做一下处理,不返回空字段,或者把NULL转成“”,spring内置的json处理框架是Jackson。我们可以对它配置一下达到目的
直接看代码,很简单.
/**
*〈返回json空值去掉null和""〉〈功能详细描述〉
*
*@authorgogym
*@version2017年10月13日
*@seeJacksonConfig
*@since
*/
@Configuration
publicclassJacksonConfig
{
@Bean
@Primary
@ConditionalOnMissingBean(ObjectMapper.class)
publicObjectMapperjacksonObjectMapper(Jackson2ObjectMapperBuilderbuilder)
{
ObjectMapperobjectMapper=builder.createXmlMapper(false).build();
//通过该方法对mapper对象进行设置,所有序列化的对象都将按改规则进行系列化
//Include.Include.ALWAYS默认
//Include.NON_DEFAULT属性为默认值不序列化
//Include.NON_EMPTY属性为空("")或者为NULL都不序列化,则返回的json是没有这个字段的。这样对移动端会更省流量
//Include.NON_NULL属性为NULL不序列化,就是为null的字段不参加序列化
//objectMapper.setSerializationInclusion(Include.NON_EMPTY);
//字段保留,将null值转为""
objectMapper.getSerializerProvider().setNullValueSerializer(newJsonSerializer
补充知识:springbootRestController配置fastjson,实体为null时不显示问题
Springboot在和fastjson配合使用时,当返回实体为空时拦截不显示问题。在实际业务中,不管返回实体是否为空,都需要显示出来,如果为空则显示null。
解决方案,引入fastjsonjar包
com.alibaba fastjson 1.2.22
添加配置ResultConfig:
packagecom.message.config;
/**
*@author:zoboy
*@Description:
*@Date:Createdin2019-11-1810:29
*/
importcom.alibaba.fastjson.serializer.SerializerFeature;
importcom.alibaba.fastjson.support.config.FastJsonConfig;
importcom.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
importorg.springframework.boot.autoconfigure.http.HttpMessageConverters;
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
importorg.springframework.http.MediaType;
importorg.springframework.http.converter.HttpMessageConverter;
importjava.util.ArrayList;
importjava.util.List;
@Configuration
publicclassResultConfig{
/*注入Bean:HttpMessageConverters,以支持fastjson*/
@Bean
publicHttpMessageConvertersfastJsonHttpMessageConverters(){
FastJsonHttpMessageConverterfastConvert=newFastJsonHttpMessageConverter();
FastJsonConfigfastJsonConfig=newFastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat,
SerializerFeature.WriteNullStringAsEmpty,
SerializerFeature.WriteNullNumberAsZero,
SerializerFeature.WriteNullListAsEmpty,
SerializerFeature.WriteMapNullValue,
SerializerFeature.DisableCheckSpecialChar);
fastJsonConfig.setDateFormat("yyyy-MM-ddhh:mm:ss");
//处理中文乱码问题
ListfastMediaTypes=newArrayList<>();
fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
fastConvert.setSupportedMediaTypes(fastMediaTypes);
fastConvert.setFastJsonConfig(fastJsonConfig);
returnnewHttpMessageConverters((HttpMessageConverter>)fastConvert);
}
}
结果:
{
"code":"0",
"message":"成功!",
"data":null
}
解决问题!
以上这篇springboot下对JSON返回值去除null和空字段操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。