注释@JsonIgnore的真正用途是啥
Posted
技术标签:
【中文标题】注释@JsonIgnore的真正用途是啥【英文标题】:what is the real use of the annotation @JsonIgnore注释@JsonIgnore的真正用途是什么 【发布时间】:2020-02-02 07:53:58 【问题描述】:我正在加入具有一对多基数的表,我正在使用的类相互引用。而且我正在使用@JsonIgnore 注释而没有深入理解它。
【问题讨论】:
忽略属性? @chrylis 抱歉我没明白你的意思? 请参考Annotation Type JsonIgnore。 【参考方案1】:@JsonIgnore
用于忽略序列化和反序列化中使用的逻辑属性。 @JsonIgnore
可用于 setters、getters 或 fields。
如果将@JsonIgnore
添加到字段或其getter 方法中,则该字段不会被序列化。
示例 POJO:
class User
@JsonIgnore
private int id;
private String name;
public int getId()
return id;
@JsonIgnore
public void setId(int id)
this.id = id;
public String getName()
return name;
public void setName(String name)
this.name = name;
序列化示例代码:
ObjectMapper mapper = new ObjectMapper();
User user = new User();
user.setId(2);
user.setName("Bob");
System.out.println(mapper.writeValueAsString(user));
控制台输出:
"name":"鲍勃"
【讨论】:
如果我将 @JsonIgnore 属性放在 fetch 类型的惰性集合上,这是否意味着不会加载惰性数据?【参考方案2】:将你的对象序列化为 Json 时,带有@JsonIgnore 标记的字段将不会包含在序列化的 Json 对象中。此属性由 Json 序列化使用反射读取。
【讨论】:
【参考方案3】:Jackson 的@JsonIgnore
注释可以放在字段上,getter/setess 和构造函数参数标记在序列化为 JSON(或从 JSON 反序列化)期间要忽略的属性。详情请参阅Jackson annotations reference documentation。
【讨论】:
以上是关于注释@JsonIgnore的真正用途是啥的主要内容,如果未能解决你的问题,请参考以下文章
Spring中@autowired注释的用途是啥。术语自动装配是啥意思[重复]