还在返回一大堆 null 字段给前端?

news2024/9/21 5:40:46

在许多情况下,返回的 JSON 数据可能包含许多 null 值的字段,这会导致数据冗余,增加网络传输的负担,并使得前端处理数据变得复杂。因此,使用 @JsonInclude(JsonInclude.Include.NON_NULL) 可以帮助我们优化 JSON 的输出,用于控制在序列化过程中是否包含 null 值的字段,确保只返回有效的数据。

考虑以下响应对象定义:

import com.fasterxml.jackson.annotation.JsonInclude;

public class User {
    private String name;
    private Integer age;
    private String email;
    private String address;
    private String phone;
    private String occupation;
    private String hobby;
    private String bio;
    private String gender;
    private String nationality;
    private Boolean married;
    private Integer children;
    private Double salary;

    // Getters and Setters
}

//赋值伪代码
User user = new User();
user.setName("Alice");
user.setAge(28);
user.setEmail(null);
user.setAddress("");
user.setPhone("123-456-7890");
user.setOccupation(null);
user.setHobby("reading");
user.setBio("");
user.setGender(null);
user.setNationality("");
user.setMarried(null);
user.setChildren(null);
user.setSalary(null);

当我们将这个对象序列化为 JSON 时,由于没有使用 @JsonInclude 注解,生成的 JSON 将是:

{
    "name": "Alice",
    "age": 28,
    "email": null,
    "address": "",
    "phone": "123-456-7890",
    "occupation": null,
    "hobby": "reading",
    "bio": "",
    "gender": null,
    "nationality": "",
    "married": null,
    "children": null,
    "salary": null
}

在没有使用 @JsonInclude(JsonInclude.Include.NON_NULL) 的情况下,返回的 JSON 数据包含了大量的 null 值字段:

email、occupation、gender、married、children、salary 等字段的值均为 null,这使得数据显得冗余。
空字符串字段(如 address 和 bio)虽然仍然存在,但它们的存在与否可能并不重要。

相比之下,使用 @JsonInclude(JsonInclude.Include.NON_NULL) 后,生成的 JSON 数据会更为简洁:

@JsonInclude(JsonInclude.Include.NON_NULL)
public class User {
    private String name;
    private Integer age;
    private String email;
    private String address;
    private String phone;
    private String occupation;
    private String hobby;
    private String bio;
    private String gender;
    private String nationality;
    private Boolean married;
    private Integer children;
    private Double salary;

    // Getters and Setters
}

响应给前端: 

{
    "name": "Alice",
    "age": 28,
    "address": "",
    "phone": "123-456-7890",
    "hobby": "reading",
    "bio": ""
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2064022.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

看看人家写的,Controller太优雅了~【送源码】

今天咱们来聊聊如何写出优雅的Controller代码。 写程序想让作品成为经典,不只是简单地加个try-catch就完事了。有时候,一个不小心,Controller里写的业务逻辑都能让你血压飙升!不过别慌,今天我就来带大家看看怎么把Cont…

文件描述符的复制,访问测试,修改文件大小,文件锁

指定文件描述符 #include <unistd.h>int dup2(int oldfd, int newfd); ->功能:复制文件描述符表的特定条目到指定项&#xff0c; ->参数:oldfd: 源文件描述符 newfd: 目标文件描述符 ->返回值:成功返回目标文件描述符(newfd)&#xff0c;失败返回…

【C++ 面试 - 面向对象】每日 3 题(八)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏&…

P(查准率) R(查全率) AP mAP最通俗准确的讲解

学习YOLO的过程中遇到了mAP指标&#xff0c;在网上看了很多关于mAP的讲解&#xff0c;不是很理解其计算过程&#xff0c;于是总结了各个帖子及自己的理解&#xff0c;给出mAP计算的规律&#xff0c;这样就能很好的记忆。 目录 一、P&#xff08;精确率&#xff09;、R&#x…

I2C通信协议(软件I2C和硬件I2C)

相比于之前学的异步全双工且需要两条通信线的串口通信&#xff0c;I2C则为同步半双工&#xff0c;仅需要一条通信线&#xff0c;全双工与半双工区别如下&#xff1a; 全双工&#xff08;Full Duplex&#xff09;半双工&#xff08;Half Duplex&#xff09;数据传输方式同时双向…

linux 磁盘满了,程序运行失败,如何处理?df -h

场景&#xff1a;紧急呼救&#xff0c;上传图片失败了。我一脸懵&#xff0c;服务器这是又咋地了&#xff0c;别邪乎姐姐&#xff0c;姐姐胆子小啊。 一、寻找问题原因 1、OSS出问题了&#xff1f; 然后我尝试了 IOS 的APP是没问题的&#xff0c;Android提示上传失败&#xf…

Excel技巧(一)

快捷键技巧 原文链接 选取某一行的数据直到最后一行&#xff1a;【CTRL SHIFT ↓ 】或者选取一行后按住SHIFT键&#xff0c;双击下边线就可以快速选取区域。 如果表格中有多行空行&#xff0c;可以先按CTRL SHIFT END&#xff0c;再按CTRL SHIFT 上下键调整&#xff0c;…

CodeLLDB的快速安装

1、CodeLLDB很难安装 ‌‌CodeLLDB插件是一个基于‌LLDB的调试器插件&#xff0c;专为‌Visual Studio Code设计&#xff0c;旨在提供类似于传统集成开发环境&#xff08;IDE&#xff09;的调试体验。‌ 它支持‌C、‌C和‌Objective-C程序的调试&#xff0c;包括设置断点、查…

这4款工具可以教会你如何用AI写ppt.

随着AI工具的盛行&#xff0c;AI办公工具也组建越来越多&#xff0c;我们可以用AI帮助生成各种文档&#xff0c;包括PPT。今天我就帮大家总结一波专业又好用的ai生成PPT的工具&#xff0c;一共有4款。 1、笔灵ppt 直通车&#xff1a;https://ibiling.cn/ppt-zone 首先要说的这…

颠茄和草本曼陀罗参考基因组(茄科)

茄科的代表性物种之二&#xff1a;颠茄和草本曼陀罗 来源文献 Revealing evolution of tropane alkaloid biosynthesis by analyzing two genomes in the Solanaceae family 推荐 惕佫酰假托品合酶的发现-文献精读28 参考链接 https://ngdc.cncb.ac.cn/gwh/Assembly/29467/s…

【Python零基础】Python中的函数

文章目录 前言一、函数定义二、传递实参三、返回值四、传递列表五、传递任意数量实参六、把函数存储在模块中七、函数定义指南总结 前言 在Python中&#xff0c;函数是一段可重用的代码块&#xff0c;用于执行特定任务。函数可以通过定义关键字 def 来创建&#xff0c;并且通常…

网络安全-防火墙安全策略初认识

文章目录 前言理论介绍1. 安全策略1.1 定义&#xff1a;1.2 关键术语&#xff1a; 2. 防火墙状态监测 实战步骤1&#xff1a;实验环境搭建步骤2&#xff1a;配置实现 总结1. 默认安全策略2. 自定义安全策略3. 防火墙状态会话表 前言 who&#xff1a;本文主要写给入门防火墙的技…

容器篇(Java - 集合)

目录 有意者可加 一、集合 1. 出现的背景 2. 带大家具体了解下集合 3. 集合带来了哪些好处 4. 集合的特点 5. 集合和数组对比 6. 数组和集合应用场景&#xff08;对比&#xff09; 6.1 数组的应用场景 1. 存储一组数据 2. 图像处理 3. 矩阵运算 4. 缓存 6.2 集合…

基于Python的mediapipe和opencv的人体骨骼、人体姿态关键点的实时跟踪项目

随着计算机视觉技术的发展&#xff0c;人体姿态估计在虚拟现实、运动分析、人机交互等领域得到了广泛应用。传统的姿态估计方法通常依赖于深度学习模型&#xff0c;需要大量的计算资源。而 Google 开发的 MediaPipe 框架则提供了高效且易于使用的解决方案&#xff0c;它可以在各…

78、 ansible----playbook

一、ansible模块 11、防火墙和网络模块&#xff1a; [roottest1 ~]# ansible 192.168.168.23 -m iptables -a chainINPUT protocolICMP source192.168.168.22 jumpREJECT -b ##-b后台&#xff0c;拒绝[roottest3 ~]# yum -y install nginx[roottest3 ~]# systemctl restart …

论文合集下载丨第十九届全国人机语音通讯学术会议

2024年8月15日至18日&#xff0c;第十九届全国人机语音通讯学术会议&#xff08;NCMMSC&#xff09;暨CCF语音对话与听觉专委会2024年学术年会在新疆乌鲁木齐成功召开。 会议论文集下载方式在文末 &#x1f447; 全国人机语音通讯学术会议作为语音技术领域内的专家、学者及科研…

为什么需要文献综述模板和创建文献综述技巧

为什么需要文献综述模板&#xff1f; 文献综述模板可以作为特定主题的指南。如果您的时间有限&#xff0c;无法进行更多研究&#xff0c;文献综述大纲示例可以为您提供帮助&#xff0c;因为它可以为您提供您打算研究的内容的概述。 甚至各个领域的专业人士也依赖文学评论来了解…

易灵思FPGA-Trion的MIPI设置使用

一、MIPI简介&#xff1f; 不需要各种资料上一大堆对物理层MIPI传输协议的讲解&#xff0c;实话说&#xff0c;我也不是特别能吃透其中的时序&#xff0c;所以不多研究&#xff1b;所有的FGPA如果带MIPI &#xff0c;那就只研究控制器就行了 &#xff0c;没必要舍近求远 二、硬…

NVM安装管理node.js版本(简单易懂)

一、前言 1.1 简介 NVM&#xff08;Node Version Manager&#xff09;是 node.js 的版本管理器&#xff0c;用 shell 脚本切换机器中不同版本的 nodejs。 Nodejs为什么需要多个版本&#xff1f; 有经验的开发者可能遇到过&#xff0c;某个依赖包明确nodejs是某个版本&#…