Spring Boot程序中@JsonIgnoreProperties与@JsonIgnore基本使用
问题由来:
springboot项目中定义了很多类,我们在rest返回中直接返回或者在返回对象中使用这些类,spring已经使用jackson自动帮我们完成这些的to json。但是有时候自动转的json内容太多,或者格式不符合我们的期望,因此需要调整类的to json过程,或者说希望自定义类的json过程。
解决办法:
使用@JsonIgnoreProperties、@JsonIgnore、@JsonFormat。
@JsonIgnore注解用来忽略某些字段,可以用在变量或者Getter方法上,用在Setter方法时,和变量效果一样。这个注解一般用在我们要忽略的字段上。
@JsonIgnoreProperties(ignoreUnknown = true),将这个注解写在类上之后,就会忽略类中不存在的字段。这个注解还可以指定要忽略的字段,例如@JsonIgnoreProperties({ “password”, “secretKey” })
@JsonFormat可以帮我们完成格式转换。例如对于Date类型字段,如果不适用JsonFormat默认在rest返回的是long,如果我们使用@JsonFormat(timezone = “GMT+8”, pattern = “yyyy-MM-dd HH:mm:ss”),就返回"2018-11-16 22:58:15"
具体可以参考官方文档
https://fasterxml.github.io/jackson-annotations/javadoc/2.6/com/fasterxml/jackson/annotation/JsonIgnoreProperties.html
实际代码
完整的程序在这里,欢迎加星,fork。
代码简要说明, User类的fullName 和comment字段会被@JsonIgnoreProperties注解忽略。address字段会被@JsonIgnore注解忽略。regDate会按照@JsonFormat(timezone = “GMT+8”, pattern = “yyyy-MM-dd HH:mm:ss”)进行格式转。
@Data
@JsonIgnoreProperties(value = {"fullName", "comment"})
public class User {private String id;private String name;private String fullName;private String comment;private String mail;@JsonIgnoreprivate String address;@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")private Date regDate;private Date reg2Date;
}
我们的controller示例代码
@ApiOperation(value = "按用户id删除", notes="private")@ApiImplicitParams({@ApiImplicitParam(name = "userId", defaultValue = "2", value = "userID", required = true, dataType = "string", paramType = "path"),})@DeleteMapping(value = "/users/{userId}", produces = "application/json;charset=UTF-8")public User delUser(@PathVariable String userId) {User user = (User)userSvc.deleteById(userId);log.info("rest del user={} by id={}", user, userId);return user;}
可以看到返回的对象是User,然后comment、fullName、address属性被忽略了,regDate的格式进行转换。
Spring Boot程序中@JsonIgnoreProperties与@JsonIgnore基本使用相关推荐
- kafka创建topic_Kafka系列第三篇!10 分钟学会如何在 Spring Boot 程序中使用 Kafka 作为消息队列?...
Guide哥答应大家的 Kafka系列的第3篇原创文章,写的非常详细,没有接触过 Kafka 的朋友应该都可以看懂,觉得不错的话一定要点亮你们的在看!在看就是对Guide 哥最大的鼓励! 为了保证内容 ...
- java获取keyvault_教程:在 Java Spring Boot 应用中使用 Azure 应用程序配置 Key Vault 引用 | Microsoft Docs...
您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 教程:在 Java S ...
- Spring Boot框架中使用Jackson的处理总结
1.前言 通常我们在使用Spring Boot框架时,如果没有特别指定接口的序列化类型,则会使用Spring Boot框架默认集成的Jackson框架进行处理,通过Jackson框架将服务端响应的数据 ...
- Guava Cache本地缓存在 Spring Boot应用中的实践
概述 在如今高并发的互联网应用中,缓存的地位举足轻重,对提升程序性能帮助不小.而 3.x开始的 Spring也引入了对 Cache的支持,那对于如今发展得如火如荼的 Spring Boot来说自然也是 ...
- Spring Boot 配置中的敏感信息如何保护?
在之前的系列教程中,我们已经介绍了非常多关于Spring Boot配置文件中的各种细节用法,比如:参数间的引用.随机数的应用.命令行参数的使用.多环境的配置管理等等. 这些配置相关的知识都是Sprin ...
- java集合系列之18 spring boot程序员的必修课
Spring Boot 2.0 的推出又激起了一阵学习 Spring Boot 热,就单从我个人的博客的访问量大幅增加就可以感受到大家对学习 Spring Boot 的热情,那么在这么多人热衷于学习 ...
- Spring Boot JPA 中transaction的使用
文章目录 @Transactional的实现 @Transactional的使用 Transaction的传播级别 REQUIRED SUPPORTS MANDATORY NEVER NOT_SUPP ...
- Spring Boot JPA中关联表的使用
文章目录 添加依赖 构建Entity 构建Repository 构建初始数据 测试 Spring Boot JPA中关联表的使用 本文中,我们会将会通过一个Book和Category的关联关系,来讲解 ...
- Spring Boot JPA中使用@Entity和@Table
文章目录 默认实现 使用@Table自定义表格名字 在JPQL Queries中重写表格名字 Spring Boot JPA中使用@Entity和@Table 本文中我们会讲解如何在Spring Bo ...
最新文章
- Cache总义Cache用法之页面声明
- 2020-09-19
- Drug Target Review | 筛选用于抗COVID-19的抗病毒化合物
- CCNP学习笔记2-路由部分--EIGRP
- excel表格中添加combobox_excel高阶打印技巧:批量为表格添加logo,学会它老板都夸你厉害...
- uic计算机科学与技术,北京师范大学-香港浸会大学联合国际学院UIC理工科技学部高招网...
- Git由浅入深之分支管理
- 树的合并 connect
- linux下tab作用的描述?
- 使用Liquid实现简单的数据交换
- pix4d操作流程_pix4d处理流程
- lcd4linux 支持的相框,最新版AIDA64支持LCD4WIN相框太给力了(20140826更新啦)!
- 圆你的大厂梦!字节跳动Java高频面试题真题一二三面常见问题
- C语言中EOF是什么意思? linux 【转载】 2020-11-19
- 大数据薪水大概多少_大数据工资一般多少
- springMVC+ajax分页查询
- Spring Cloud Contract 初识之一 :简介
- 设计模式之委派模式(不属于23种经典设计模式之一)
- 如何在JavaScript中删除字符串的第一个字符
- 智慧农业系统在蔬菜育苗中的应用