SrpingMVC/SpringBoot中restful接口序列化json的时候使用Jackson将空字段,空字符串不传递给前端
笔者的JSON如下:
{
"code": 10001,
"message": "成功",
"nextUrl": null,
"data": {
"updateTime": "2020-02-23 13:43:18",
"result": [
{
"confirm": 24,
"suspect": 0,
"dead": 0,
"heal": 17,
"weight": 18.8,
"mapId": null,
"updateTime": "2020-02-25 18:17:14"
},
{
"confirm": 19,
"suspect": 0,
"dead": 0,
"heal": 14,
"weight": 15.1,
"mapId": "c320500_2",
"updateTime": "2020-02-25 18:17:14"
},
{
"confirm": 10,
"suspect": 0,
"dead": 0,
"heal": 7,
"weight": 7.8,
"mapId": "c320500_4",
"updateTime": "2020-02-25 18:17:14"
},
{
"confirm": 8,
"suspect": 0,
"dead": 0,
"heal": 6,
"weight": 6.4,
"mapId": "c320500_7",
"updateTime": "2020-02-25 18:17:14"
},
{
"confirm": 6,
"suspect": 0,
"dead": 0,
"heal": 3,
"weight": 4.2,
"mapId": "c320500_8",
"updateTime": "2020-02-25 18:17:14"
},
{
"confirm": 6,
"suspect": 0,
"dead": 0,
"heal": 2,
"weight": 3.8,
"mapId": null,
"updateTime": "2020-02-25 18:17:14"
},
{
"confirm": 5,
"suspect": 0,
"dead": 0,
"heal": 4,
"weight": 4.1,
"mapId": "c320500_5",
"updateTime": "2020-02-25 18:17:14"
},
{
"confirm": 4,
"suspect": 0,
"dead": 0,
"heal": 3,
"weight": 3.2,
"mapId": "c320500_0",
"updateTime": "2020-02-25 18:17:14"
},
{
"confirm": 3,
"suspect": 0,
"dead": 0,
"heal": 1,
"weight": 1.9,
"mapId": "c320500_3",
"updateTime": "2020-02-25 18:17:14"
},
{
"confirm": 2,
"suspect": 0,
"dead": 0,
"heal": 0,
"weight": 1,
"mapId": "c320500_6",
"updateTime": "2020-02-25 18:17:14"
},
{
"confirm": 0,
"suspect": 0,
"dead": 0,
"heal": 2,
"weight": 0.8,
"mapId": null,
"updateTime": "2020-02-26 11:56:04"
}
]
}
}
里面有mapId这个字段,多处都为null,在大json考虑网络传输速度的情况下,这些null字段是多余的。
springmvc/springBoot中json框架默认使用Jackson,我们就可以通过Jackson相关注解来过滤字段为null的字段。
只要加
@JsonInclude(JsonInclude.Include.NON_EMPTY)
对应java类Snapshot.java
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.google.common.base.Objects;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.ibatis.type.JdbcType;
import tk.mybatis.mapper.annotation.ColumnType; import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient; @Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Table(name = "snapshot")
public class SnapShot { @JsonIgnore
@Id
@GeneratedValue(generator = "JDBC")
private Integer id; @JsonIgnore
private Integer distId; private Integer confirm; private Integer suspect; private Integer dead; @JsonIgnore
private String deadRate; private Integer heal;
@ColumnType(column = "`weight`",jdbcType = JdbcType.FLOAT)
private Float weight;
@JsonIgnore
private Float riskLevel = 0.0f; @JsonIgnore
private String healRate; @JsonIgnore
@Transient
//@ColumnType(column = "`level`",jdbcType = JdbcType.VARCHAR)
private String level; @JsonInclude(JsonInclude.Include.NON_EMPTY)
private String mapId; private String updateTime; @Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
SnapShot snapShot = (SnapShot) o;
return Objects.equal(distId, snapShot.distId) &&
Objects.equal(confirm, snapShot.confirm) &&
Objects.equal(suspect, snapShot.suspect) &&
("area".equals(level)?
Objects.equal(suspect, snapShot.suspect):
true) &&
Objects.equal(dead, snapShot.dead) &&
Objects.equal(heal, snapShot.heal);
} @Override
public int hashCode() {
return 0;
}
}
设置后效果如下:

转载自:https://www.cnblogs.com/yangy608/p/3936848.html
SrpingMVC/SpringBoot中restful接口序列化json的时候使用Jackson将空字段,空字符串不传递给前端的更多相关文章
- 【快学springboot】2.Restful简介,SpringBoot构建Restful接口
Restful简介 Restful一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现 ...
- [2019/05/17]解决springboot测试List接口时JSON传参异常
报错信息,大致如下 c.c.c.c.a.BaseControllerExceptionHandler : 运行时异常: java.lang.IllegalStateException: No prim ...
- 基于springboot的restful接口的单元测试示例
一.知识点 代码中对应的知识点 1.jsonPath github网址 1)操作符见文档 2)方法见文档 3)例子见文档 2.MockMvc(org.springframework.test.web. ...
- [二十七]SpringBoot 之 Restful接口的跨域请求
什么是跨域 简单的说即为浏览器限制访问A站点下的js代码对B站点下的url进行ajax请求.比如说,前端域名是www.abc.com,那么在当前环境中运行的js代码,出于安全考虑,访问www.xyz. ...
- SpringBoot中配置不序列化返回值为null的属性
package com.weiresearch.properties; import com.fasterxml.jackson.annotation.JsonInclude;import com.f ...
- Springboot中WebMvcConfigurer接口详解
Springboot 使用越来越多,企业的基本框架,到Springcloud分布式,可以说无论面试还是平常技术学习,一说到spring几乎就就代替了Java,可以说spring,springboot的 ...
- 聊一聊 Spring Boot 中 RESTful 接口设计规范
在设计接口时,有很多因素要考虑,如接口的业务定位,接口的安全性,接口的可扩展性.接口的稳定性.接口的跨域性.接口的协议规则.接口的路径规则.接口单一原则.接口过滤和接口组合等诸多因素,本篇文章将简要分 ...
- 无规矩不成方圆,聊一聊 Spring Boot 中 RESTful 接口设计规范
在设计接口时,有很多因素要考虑,如接口的业务定位,接口的安全性,接口的可扩展性.接口的稳定性.接口的跨域性.接口的协议规则.接口的路径规则.接口单一原则.接口过滤和接口组合等诸多因素,本篇文章将简要分 ...
- [JAVA]SpringBoot中让接口支持跨域
官方原文:https://spring.io/blog/2015/06/08/cors-support-in-spring-framework ===抽空翻译 最简单办法:在方法上增加注解: @Cro ...
随机推荐
- 吴裕雄--天生自然JAVA数据库编程:JDBC2.0操作
import java.sql.Connection ; import java.sql.DriverManager ; import java.sql.SQLException ; import j ...
- HDU - 1754 I Hate It (线段树点修改求最大值)
题意:有N个学生M条操作,0<N<=200000,0<M<5000,要么查询某区间内学生的最高分,要么更改某学生的成绩. 分析:原理和线段树点修改求和类似. #include& ...
- 第1课 VMware的NSX全面落地软件定义网络SDN
SDN的定义: 即软件定义网络(Software Defined Network)的缩写,它是一种基于网络架构的创新,一种在已存在物理传输网络之上的抽象形态,它是一种体系结构,它是众多网络虚拟化技术中 ...
- JS浮点数的研究
为什么0.1 + 0.2 得到的是 0.30000000000000004 console.log( 0.1 + 0.2 == 0.3);//false 在js中所有的整数和小数都是以Number形式 ...
- 学生选课数据库MySQL语句练习题45道
1. 查询Student表中的所有记录的Sname.Ssex和Class列. select Sname,Ssex,Class from Student;2. 查询教师所有的单位即不重复的Depart列 ...
- .NET via C#笔记12——泛型
12 泛型 使用值类型作为参数的泛型容器,传入值类型的参数时,不需要进行装箱 12.1 FCL中的泛型 System.Array中提供了很多泛型方法 AsReadOnly BinarySearch C ...
- redisTemplate注入为空
springboot2.*集成redis时,redis工具类中的redisTemplate注入后总是为空. 问题代码还原: 1.工具类定义成静态工具类,@Resource注入redisTemplate ...
- python中pip的安装问题
当系统中同时存在python2.python3的时候,在进行pip下载的时总出现不知道用哪个 情况,此时就需要这样做: python2 -m pip install numpy //使用pip给pyt ...
- 中兴将用“加减乘除”建立理想 5G 网络
6 月 28 日,MWC 2019 上海展期间,中兴通讯执行董事.总裁徐子阳发表演讲表示,面对 5G 建网大势,要看破大势,不破不立.为此中兴将用“加减乘除”建立理想 5G 网络. 何为“加减乘除 ...
- 官网英文版学习——RabbitMQ学习笔记(三)Hello World!
参考http://www.rabbitmq.com/tutorials/tutorial-one-java.html,我们直接上代码,由于我们的RabbitMQ服务是安装在虚拟机上的,具体参考上一节. ...