博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring boot 接口返回值去掉为null的字段
阅读量:5252 次
发布时间:2019-06-14

本文共 2268 字,大约阅读时间需要 7 分钟。

现在项目都是前后端分离的,返回的数据都是使用json,但有些接口的返回值存在 null或者"",这种字段不仅影响理解,还浪费带宽,需要统一做一下处理,不返回空字段,或者把NULL转成“”,spring 内置的json处理框架是Jackson,对它配置后可以去除

Jackson ObjectMapper

通过自定义配置该组件可以选择性序列化返回的JSON

通过官网可以知道:https://docs.spring.io/spring-boot/docs/2.1.1.RELEASE/reference/htmlsingle/#howto-customize-the-jackson-objectmapper

 

Spring MVC(客户端和服务器端)用于HttpMessageConverters在HTTP交换中协商内容转换。如果Jackson在类路径上,您已经获得了提供的默认转换器Jackson2ObjectMapperBuilder,其中一个实例是为您自动配置的。

Spring Boot还具有一些功能,可以更轻松地自定义此行为。

新建配置类:(去掉 null 或 "" 字段)

package com.zpark.tools;import com.fasterxml.jackson.annotation.JsonInclude;import com.fasterxml.jackson.databind.ObjectMapper;import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;/** * @author cosmo * @Title: JacksonConfig * @ProjectName   * @Description:   * @date   */@Configurationpublic class JacksonConfig {       @Bean    @Primary    @ConditionalOnMissingBean(ObjectMapper.class)    public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {        ObjectMapper objectMapper = builder.createXmlMapper(false).build();        //通过该方法对mapper对象进行设置,所有序列化的对象都将按改规则进行系列化,属性为NULL 不序列化        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);        return objectMapper;    }     //Include.Include.ALWAYS 默认     //Include.NON_DEFAULT    属性为默认值不序列化     //nclude.NON_EMPTY       属性为 空("") 或者为 NULL 都不序列化     //Include.NON_NULL       属性为NULL 不序列化 }

替换非空:

public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {        ObjectMapper objectMapper = builder.createXmlMapper(false).build();        objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer() {            @Override            public void serialize(Object o, JsonGenerator jsonGenerator,SerializerProvider serializerProvider)throws IOException, JsonProcessingException {                jsonGenerator.writeString("");            }        });        return objectMapper;    }

 

posted on
2019-02-25 16:07 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/qinxu/p/10208858.html

你可能感兴趣的文章
前台freemark获取后台的值
查看>>
Leetcode: Unique Binary Search Trees II
查看>>
C++ FFLIB 之FFDB: 使用 Mysql&Sqlite 实现CRUD
查看>>
Spring-hibernate整合
查看>>
c++ map
查看>>
exit和return的区别
查看>>
Django 相关
查看>>
比较安全的获取站点更目录
查看>>
Python(软件目录结构规范)
查看>>
Windows多线程入门のCreateThread与_beginthreadex本质区别(转)
查看>>
redis哨兵集群、docker入门
查看>>
codeforces水题100道 第二十二题 Codeforces Beta Round #89 (Div. 2) A. String Task (strings)
查看>>
c++||template
查看>>
条件断点 符号断点
查看>>
Python Web框架Django (五)
查看>>
.net学习之继承、里氏替换原则LSP、虚方法、多态、抽象类、Equals方法、接口、装箱拆箱、字符串------(转)...
查看>>
python的多行注释
查看>>
连接Oracle需要jar包和javadoc文档的下载
查看>>
UVA 10976 - Fractions Again?!
查看>>
Dreamweaver cc新版本css单行显示
查看>>