java生成json實現(xiàn)隱藏掉關鍵屬性
java生成json隱藏關鍵屬性
今天在工作中遇到一個這樣的問題,當后端返回數(shù)據(jù)時一些關鍵信息或敏感信息并不想返回到前端,但是又懶得定義專用的DTO返回怎么辦(強烈不推薦,最好定義專用的DTO返回),比如一張用戶表有屬性有用戶名、密碼、昵稱、頭像、性別、個人簡介,用@ResponseBody生成json直接用戶名和密碼都輸出到前臺展示了,用戶名和密碼這兩個屬性怎么隱藏掉。
我們項目中使用的是Spring Boot,默認用的是Jackson做JSON的serialization/deserialization。
因此解決方案如下
用@JsonIgnore或@JsonProperty注解就可以了
private String password;? @JsonIgnore public String getPassword(){}
或者
@JsonProperty(access = Access.WRITE_ONLY) private String password;
其實方法還有很多,例如還可以寫過濾器來實現(xiàn),如果你使用的是FastJson轉(zhuǎn)Json字符串,想要忽略指定屬性可以使用注解@JSONFie 。
例如:
public class FastJsonInputBean implements Serializable { ? ? private String contractTemplateId; ? ? private String contractId; ? ? @JSONField(serialize = false) ? ? private String contractImage; ? ? private String contractVersion;? }
java實體轉(zhuǎn)json忽略屬性
import com.alibaba.fastjson.annotation.JSONField;
fastjson 過濾指定字段
@JSONField(serialize=false) private String message;
序列化的時候就不會包含這個字段。
另外, 你從一個bean中只取一個字段,沒必要這樣做,你完全可以定義一個新的bean。
@JsonIgnoreProperties(value={"addressId"})//在解析成json時,忽略子屬性的addressId字段 public class DicType { private String addressId; }
@JsonIgnore private String img;
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
spring中12種@Transactional的失效場景(小結(jié))
日常我們進行業(yè)務開發(fā)時,基本上使用的都是聲明式事務,即為使用@Transactional注解的方式,本文主要介紹了spring中12種@Transactional的失效場景,感興趣的小伙伴們可以參考一下2022-01-01Java中動態(tài)規(guī)則的實現(xiàn)方式示例詳解
這篇文章主要介紹了Java中動態(tài)規(guī)則的實現(xiàn)方式,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08mybatis參數(shù)String與Integer類型的判斷方式
這篇文章主要介紹了mybatis參數(shù)String與Integer類型的判斷方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03springBoot controller,service,dao,mapper,model層的作用說明
這篇文章主要介紹了springBoot controller,service,dao,mapper,model層的作用說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11