问题由来
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基本使用相关推荐

  1. kafka创建topic_Kafka系列第三篇!10 分钟学会如何在 Spring Boot 程序中使用 Kafka 作为消息队列?...

    Guide哥答应大家的 Kafka系列的第3篇原创文章,写的非常详细,没有接触过 Kafka 的朋友应该都可以看懂,觉得不错的话一定要点亮你们的在看!在看就是对Guide 哥最大的鼓励! 为了保证内容 ...

  2. java获取keyvault_教程:在 Java Spring Boot 应用中使用 Azure 应用程序配置 Key Vault 引用 | Microsoft Docs...

    您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 教程:在 Java S ...

  3. Spring Boot框架中使用Jackson的处理总结

    1.前言 通常我们在使用Spring Boot框架时,如果没有特别指定接口的序列化类型,则会使用Spring Boot框架默认集成的Jackson框架进行处理,通过Jackson框架将服务端响应的数据 ...

  4. Guava Cache本地缓存在 Spring Boot应用中的实践

    概述 在如今高并发的互联网应用中,缓存的地位举足轻重,对提升程序性能帮助不小.而 3.x开始的 Spring也引入了对 Cache的支持,那对于如今发展得如火如荼的 Spring Boot来说自然也是 ...

  5. Spring Boot 配置中的敏感信息如何保护?

    在之前的系列教程中,我们已经介绍了非常多关于Spring Boot配置文件中的各种细节用法,比如:参数间的引用.随机数的应用.命令行参数的使用.多环境的配置管理等等. 这些配置相关的知识都是Sprin ...

  6. java集合系列之18 spring boot程序员的必修课

    Spring Boot 2.0 的推出又激起了一阵学习 Spring Boot 热,就单从我个人的博客的访问量大幅增加就可以感受到大家对学习 Spring Boot 的热情,那么在这么多人热衷于学习 ...

  7. Spring Boot JPA 中transaction的使用

    文章目录 @Transactional的实现 @Transactional的使用 Transaction的传播级别 REQUIRED SUPPORTS MANDATORY NEVER NOT_SUPP ...

  8. Spring Boot JPA中关联表的使用

    文章目录 添加依赖 构建Entity 构建Repository 构建初始数据 测试 Spring Boot JPA中关联表的使用 本文中,我们会将会通过一个Book和Category的关联关系,来讲解 ...

  9. Spring Boot JPA中使用@Entity和@Table

    文章目录 默认实现 使用@Table自定义表格名字 在JPQL Queries中重写表格名字 Spring Boot JPA中使用@Entity和@Table 本文中我们会讲解如何在Spring Bo ...

最新文章

  1. Cache总义Cache用法之页面声明
  2. 2020-09-19
  3. Drug Target Review | 筛选用于抗COVID-19的抗病毒化合物
  4. CCNP学习笔记2-路由部分--EIGRP
  5. excel表格中添加combobox_excel高阶打印技巧:批量为表格添加logo,学会它老板都夸你厉害...
  6. uic计算机科学与技术,北京师范大学-香港浸会大学联合国际学院UIC理工科技学部高招网...
  7. Git由浅入深之分支管理
  8. 树的合并 connect
  9. linux下tab作用的描述?
  10. 使用Liquid实现简单的数据交换
  11. pix4d操作流程_pix4d处理流程
  12. lcd4linux 支持的相框,最新版AIDA64支持LCD4WIN相框太给力了(20140826更新啦)!
  13. 圆你的大厂梦!字节跳动Java高频面试题真题一二三面常见问题
  14. C语言中EOF是什么意思? linux 【转载】 2020-11-19
  15. 大数据薪水大概多少_大数据工资一般多少
  16. springMVC+ajax分页查询
  17. Spring Cloud Contract 初识之一 :简介
  18. 设计模式之委派模式(不属于23种经典设计模式之一)
  19. 如何在JavaScript中删除字符串的第一个字符
  20. 智慧农业系统在蔬菜育苗中的应用

热门文章

  1. PANet 实例分割
  2. i7 10510u 怎么样
  3. [BZOJ 2626]JZPFAR
  4. 用少样本finetune
  5. vue 钩子函数 使用async await
  6. Node.js web服务器文件读取
  7. 开始熟悉G1垃圾收集器
  8. 青铜修炼手册:Axure页面右键菜单制作
  9. java实现对rar文件和zip文件的解压缩
  10. avcodec_receive_frame始终返回EAGAIN