JACKSON和FASTJSON处理返回JSON数据中为NULL字段不显示
JACKSON
1.实体上
将此注解放在属性上,如果该属性为null则不参与序列化(为null的字段不显示)
如果放在类上边,那对这个类的全部属性起作用,展示所有字段。
@JsonInclude(JsonInclude.Include.ALWAYS) //放在类上,展示所有字段
Include.Include.ALWAYS 默认展示所有字段
Include.NON_DEFAULT 属性为默认值不序列化
Include.NON_EMPTY 属性为 空("") 或者为 NULL 都不序列化
Include.NON_NULL 属性为NULL 不序列化
FASTJSON
- package com.aiqin.bms.slcs.api.config;
- import com.alibaba.fastjson.serializer.SerializerFeature;
- import com.alibaba.fastjson.support.config.FastJsonConfig;
- import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.http.MediaType;
- import org.springframework.http.converter.HttpMessageConverter;
- import org.springframework.web.servlet.config.annotation.CorsRegistry;
- import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
- import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
- import java.nio.charset.Charset;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * description: fastjson处理返回的参数为null、或者不返回
- * date: 2020/03/06 15:03
- * version: 1.0
- * springboot 处理返回结果中字段为空或为null,不展示字段的问题(字段展示不全)
- */
- @Configuration
- public class FastJsonConfiguration extends WebMvcConfigurationSupport {
- /**
- * 使用阿里 fastjson 作为JSON MessageConverter
- * @param converters
- */
- @Override
- public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
- FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
- FastJsonConfig config = new FastJsonConfig();
- config.setSerializerFeatures(
- //全局修改日期格式,如果时间是data、时间戳类型,按照这种格式初始化时间 "yyyy-MM-dd HH:mm:ss"
- SerializerFeature.WriteDateUseDateFormat,
- // 保留map空的字段
- SerializerFeature.WriteMapNullValue,
- // 将String类型的null转成""
- SerializerFeature.WriteNullStringAsEmpty,
- // 将Number类型的null转成0
- SerializerFeature.WriteNullNumberAsZero,
- // 将List类型的null转成[]
- SerializerFeature.WriteNullListAsEmpty,
- // 将Boolean类型的null转成false
- SerializerFeature.WriteNullBooleanAsFalse,
- // 避免循环引用
- SerializerFeature.DisableCircularReferenceDetect);
- converter.setFastJsonConfig(config);
- converter.setDefaultCharset(Charset.forName("UTF-8"));
- List<MediaType> mediaTypeList = new ArrayList<>();
- // 解决中文乱码问题,相当于在Controller上的@RequestMapping中加了个属性produces = "application/json"
- mediaTypeList.add(MediaType.APPLICATION_JSON);
- converter.setSupportedMediaTypes(mediaTypeList);
- converters.add(converter);
- }
- // /**
- // * 整合了swagger需要配置swagger拦截
- // * @param registry
- // */
- // @Override
- // public void addResourceHandlers(ResourceHandlerRegistry registry) {
- // registry.addResourceHandler("swagger-ui.html","index.html").addResourceLocations("classpath:/META-INF/resources/");
- // registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
- // registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
- // registry.addResourceHandler("/static/**").addResourceLocations("classpath:/META-INF/resources/static/");
- // }
- //
- //
- // @Override
- // public void addCorsMappings(CorsRegistry registry) {
- // registry.addMapping("/**")
- // .allowedOrigins("*")
- // .allowCredentials(true)
- // .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
- // .maxAge(3600);
- // }
- }
============ 欢迎各位老板打赏~ ===========
与本文相关的文章
- · springboot使用lock4j实现并发控制
- · springboot全局增加sentinel
- · Springboot整合Swagger常用注解
- · swagger隐藏authentication参数
- · Spring Security 中的自定义PreAuthorize 注解
- · 将数据从mysql迁移到clickhouse
- · springboot登录失败3次后需要验证码的设计及实现
- · Mybatis —— 解决单引号带来的sql注入问题
- · Springboot整合Nacos(动态改变数据库连接参数)
- · springboot访问静态资源404 —-idea设置问题
- · Java基础问题13个,你都会哪些?
- · 不重新打包项目并替换部分jar包