1. 前言 在Java开发中有时候某些敏感信息我们需要屏蔽掉,何再忽略不能被消费这些数据的掉属客户端知道。通常情况下我们会将其设置为null或者空字符"",何再忽略其实还有其它办法,掉属如果你使用了Jackson的何再忽略话。接下来我将以一个实际场景来告诉你可以怎么做。掉属 2. Jackson 如何忽略字段 这里都以 JSON 序列化为例。何再忽略假如我们在业务中需要返回用户信息,掉属已有的何再忽略 POJO 是这样的: 业务场景:第三方通过用户的userId来获取用户的信息,但是掉属密钥串secret显然不能让第三方知道,通常最容易想到的何再忽略方法是将secret字段设置为null或者""。如果业务需要批量提供用户信息,掉属即List,何再忽略我们总不能每次都要遍历一遍吧。掉属Spring Boot内置的何再忽略Jackson可以很方便的帮我们处理这个问题。 使用@JsonIgnore 注解 Jackson提供了一个@JsonIgnore注解,将它标记到需要被忽略的字段上或者对应的getter方法或者setter方法上就可以实现对该字段的屏蔽。就像下面这样标记: 无论是序列化(将POJO转为JSON)还是服务器租用反序列化((将JSON转为POJO),secret都会被忽略。 使用@JsonIgnoreProperties 注解 这个注解比@JsonIgnore更加强大一些,通常该注解标记到POJO之上,它有更多的能力: 例如我们要忽略UserInfo中的secret和address,我们可以这样配置: 使用@JsonProperty 注解 需要 Jackson 版本不低于 2.6 这个注解出镜率还是非常高的,通常为了给JSON的字段起别名或者设置默认值使用。比如UserInfo中的userId想对应JSON中的user_id,我们可以: 在 2.6 版本以后,这个注解也能实现忽略字段的作用。它有个access属性,源码库用来指定在序列化(“读取”)和反序列化(“写”)期间访问权限(这里的读写是以属性为视角)。它由枚举Access定义: 从这个注解中我们可以知道,如果你想在POJO转JSON时忽略secret字段,就可以这么写: 使用@JsonIgnoreType 注解 这个注解是用来直接忽略类型的,如果上面的亿华云UserInfo是另外一个 POJO 的属性,我们不希望它被序列化和反序列化,那么就可以: 3. 总结 目前大概可知的 Jackson 有这么四种的忽略属性的方式,它们有各自的使用场景,你可以根据自己的情况选择使用。好了今天的分享就到这里,多多关注:码农小胖哥,获取更多的编程干货。 本文转载自微信公众号「码农小胖哥」,可以通过以下二维码关注。转载本文请联系码农小胖哥公众号。