加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

怎样在Java Pojo转Jsoy时忽略掉一些属性

发布时间:2021-06-03 00:34:23 所属栏目:编程 来源:互联网
导读:1. 媒介 在Java开拓中偶然辰某些敏感信息我们必要屏障掉,不能被斲丧这些数据的客户端知道。凡是环境下我们会将其配置为null可能空字符,着实尚有其余步伐,假如

在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; 

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读