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和空字段操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。