怎样在Java Pojo转Jsoy时忽略掉一些属性
在Java开拓中偶然辰某些敏感信息我们必要屏障掉,不能被斲丧这些数据的客户端知道。凡是环境下我们会将其配置为null可能空字符"",着实尚有其余步伐,假如你行使了Jackson的话。接下来我将以一个现实场景来汇报你可以怎么做。 2. Jackson 怎样忽略字段 这里都以 JSON 序列化为例。若是我们在营业中必要返回用户信息,已有的 POJO 是这样的: import lombok.Data;
/** * @author felord.cn */ @Data public class UserInfo { /** * userid */ private String userId; /** * 用户名 */ private String username; /** * 密钥串 */ private String secret; /** * 地点信息 */ private String address; } 营业场景:第三方通过用户的userId来获取用户的信息,可是密钥串secret显然不能让第三方知道,凡是最轻易想到的要领是将secret字段配置为null可能""。假如营业必要批量提供用户信息,即List,我们总不能每次都要遍历一遍吧。Spring Boot内置的Jackson可以很利便的帮我们处理赏罚这个题目。 行使@JsonIgnore 注解 Jackson提供了一个@JsonIgnore注解,将它标志到必要被忽略的字段上可能对应的getter要领可能setter要领上就可以实现对该字段的屏障。就像下面这样标志: @JsonIgnore private String secret; // 对应json 样例 {"userId":"100000","username":"felord.cn","address":"cn"} 无论是序列化(将POJO转为JSON)照旧反序列化((将JSON转为POJO),secret城市被忽略。 行使@JsonIgnoreProperties 注解 这个注解比@JsonIgnore越发强盛一些,凡是该注解标志到POJO之上,它有更多的手段: 忽略多个字段,设置value属性即可。 忽略未知的属性,设置ignoreUnknown为true,默认不忽略。 应承忽略字段被序列化,设置allowGetters为true,序列化的时辰不会被忽略。 应承忽略字段被反序列化,设置allowSetters为true,反序列化的时辰不会被忽略。 譬喻我们要忽略UserInfo中的secret和address,我们可以这样设置: @JsonIgnoreProperties({"secret", "address"}) 行使@JsonProperty 注解 必要 Jackson 版本不低于 2.6 这个注解出镜率还长短常高的,凡是为了给JSON的字段起别名可能配置默认值行使。好比UserInfo中的userId想对应JSON中的user_id,我们可以: @JsonProperty(value = "user_id") private String userId; (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |