我的编程空间,编程开发者的网络收藏夹
学习永远不晚

springboot怎么配置Jackson返回统一默认值

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

springboot怎么配置Jackson返回统一默认值

这篇文章主要介绍“springboot怎么配置Jackson返回统一默认值”,在日常操作中,相信很多人在springboot怎么配置Jackson返回统一默认值问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”springboot怎么配置Jackson返回统一默认值”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

在项目开发中,我们返回的数据或者对象没有的时候一般直接返回的null

有数据时的返回值

{ "flag": true, "code": "10000", "msg": "成功!", "data": {  "id": 32,  "templateType": 1,  "templateName": "我的测试模板1",  "freightName": "我的测试标题1",  "listArea": [   {    "id": 968,    "templateId": 32,    "freightPrice": 15,   }  ],  "templateDescEntity": {   "id": 1   "name": "xxx"  } }}

没有数据时的返回值

{ "flag": true, "code": "10000", "msg": "成功!", "data": {  "id": 32,  "templateType": 1,  "templateName": null,  "freightName": null,  "listArea": null,  "templateDescEntity": null }}

这种情况下数据返回给前端,前端需要做大量的空值判断
如前端调使用属性data.templateDescEntity.id的时候就会直接报异常
此时我们可以使用返回值统一处理,配置如下

pom.xml添加

<dependency>    <groupId>com.fasterxml.jackson.core</groupId>    <artifactId>jackson-annotations</artifactId>    <version>2.9.5</version></dependency><dependency>    <groupId>com.fasterxml.jackson.core</groupId>    <artifactId>jackson-databind</artifactId></dependency>

java类添加配置

package com.ys.mall.core.product.config;import com.fasterxml.jackson.core.JsonGenerator;import com.fasterxml.jackson.databind.JsonSerializer;import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.databind.SerializerProvider;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;import java.io.IOException;import java.lang.reflect.Field;import java.util.Collection;import java.util.List;import java.util.Map;import java.util.Objects;@Configurationpublic class JacksonConfig {    @Bean    @Primary    @ConditionalOnMissingBean(ObjectMapper.class)    public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {        ObjectMapper objectMapper = builder.createXmlMapper(false).build();        objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {            @Override            public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {                String fieldName = jsonGenerator.getOutputContext().getCurrentName();                try {                    //反射获取字段类型                    Field field = jsonGenerator.getCurrentValue().getClass().getDeclaredField(fieldName);                    if (CharSequence.class.isAssignableFrom(field.getType())) {                        //字符串型空值""                        jsonGenerator.writeString("");                        return;                    } else if (Collection.class.isAssignableFrom(field.getType())) {                        //列表型空值返回[]                        jsonGenerator.writeStartArray();                        jsonGenerator.writeEndArray();                        return;                    } else if (Map.class.isAssignableFrom(field.getType())) {                        //map型空值 或者 bean对象 返回{}                        jsonGenerator.writeStartObject();                        jsonGenerator.writeEndObject();                        return;                    }                } catch (NoSuchFieldException ignored) {                }                jsonGenerator.writeString("");            }        });        return objectMapper;    }}

添加空值统一处理后的返回值

{ "flag": true, "code": "10000", "msg": "成功!", "data": {  "id": 32,  "templateType": 1,  "templateName": "",  "freightName": "",  "listArea": [],  "templateDescEntity": {} }}

到此,关于“springboot怎么配置Jackson返回统一默认值”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

springboot怎么配置Jackson返回统一默认值

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

springboot怎么配置Jackson返回统一默认值

这篇文章主要介绍“springboot怎么配置Jackson返回统一默认值”,在日常操作中,相信很多人在springboot怎么配置Jackson返回统一默认值问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”s
2023-06-20

springboot默认线程池怎么配置

在Spring Boot中,可以通过配置文件(application.properties或application.yml)来配置默认的线程池。以下是一些常用的配置项:核心线程数:`spring.task.execution.thread-
2023-10-27

SpringBoot中怎么统一全局Controller返回值格式

这期内容当中小编将会给大家带来有关SpringBoot中怎么统一全局Controller返回值格式,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、返回值格式统一1.返回值介绍在使用controller对
2023-06-20

SpringBoot怎么统一JSON信息返回

这篇文章主要介绍“SpringBoot怎么统一JSON信息返回”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot怎么统一JSON信息返回”文章能帮助大家解决问题。调用后端服务后的返回
2023-06-27

怎么在SpringBoot中统一api的返回风格

怎么在SpringBoot中统一api的返回风格?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。例如{ "code": 200, "msg": "", "data": "Ob
2023-06-07

SpringBoot怎么实现统一后端返回格式

这篇文章主要介绍“SpringBoot怎么实现统一后端返回格式”,在日常操作中,相信很多人在SpringBoot怎么实现统一后端返回格式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SpringBoot怎么实
2023-06-30

ubuntu20.04与win10双系统怎么设置默认启动win10配置?

最近给自己的笔记本安装了ubuntu20.04与win10双系统,因为是首先安装的win10后来再安装的ubuntu的,所以默认启动的是ubuntu系统,现在想要修改为win10默认开机启动,该怎么设置呢?下面我们就来看看详细的教程。默认情
2022-06-05

SpringBoot统一接口返回及全局异常怎么处理

今天小编给大家分享一下SpringBoot统一接口返回及全局异常怎么处理的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、S
2023-07-06

.NetCore Web Api怎么用ActionFilterAttribute统一接口返回值格式

本文小编为大家详细介绍“.NetCore Web Api怎么用ActionFilterAttribute统一接口返回值格式”,内容详细,步骤清晰,细节处理妥当,希望这篇“.NetCore Web Api怎么用ActionFilterAttr
2023-06-29

linux系统怎么在Crunchbang下恢复Openbox的默认配置

本篇内容介绍了“linux系统怎么在Crunchbang下恢复Openbox的默认配置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!runc
2023-06-13

怎么在LINUX系统下修改debian wheezy默认配置的方法

这篇文章主要介绍“怎么在LINUX系统下修改debian wheezy默认配置的方法”,在日常操作中,相信很多人在怎么在LINUX系统下修改debian wheezy默认配置的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法
2023-06-13

在Spring Boot中统一Restful API返回值格式与统一处理异常怎么解决

这篇文章主要为大家分析了在Spring Boot中统一Restful API返回值格式与统一处理异常怎么解决的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“在
2023-06-16

springboot 返回json格式数据时间格式配置方式是怎么样的

springboot 返回json格式数据时间格式配置方式是怎么样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。返回json格式数据时间格式配置数据库里面查出
2023-06-25

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录