java生成json隐藏关键属性
今天在工作中遇到一个这样的问题,当后端返回数据时一些关键信息或敏感信息并不想返回到前端,但是又懒得定义专用的DTO返回怎么办(强烈不推荐,最好定义专用的DTO返回),比如一张用户表有属性有用户名、密码、昵称、头像、性别、个人简介,用@ResponseBody生成json直接用户名和密码都输出到前台展示了,用户名和密码这两个属性怎么隐藏掉。
我们项目中使用的是Spring Boot,默认用的是Jackson做JSON的serialization/deserialization。
因此解决方案如下
用@JsonIgnore或@JsonProperty注解就可以了
1
2
3
|
private String password; @JsonIgnore public String getPassword(){} |
或者
1
2
|
@JsonProperty (access = Access.WRITE_ONLY) private String password; |
其实方法还有很多,例如还可以写过滤器来实现,如果你使用的是FastJson转Json字符串,想要忽略指定属性可以使用注解@JSONFie 。
例如:
1
2
3
4
5
6
7
|
public class FastJsonInputBean implements Serializable { private String contractTemplateId; private String contractId; @JSONField (serialize = false ) private String contractImage; private String contractVersion; } |
java实体转json忽略属性
1
|
import com.alibaba.fastjson.annotation.JSONField; |
fastjson 过滤指定字段
1
2
|
@JSONField (serialize= false ) private String message; |
序列化的时候就不会包含这个字段。
另外, 你从一个bean中只取一个字段,没必要这样做,你完全可以定义一个新的bean。
1
2
3
4
|
@JsonIgnoreProperties (value={ "addressId" }) //在解析成json时,忽略子属性的addressId字段 public class DicType { private String addressId; } |
1
2
|
@JsonIgnore private String img; |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://itonline.blog.csdn.net/article/details/90748248