我知道@JsonIgnore
和@JsonManagedReference
,@JsonBackReference
都用于解决Infinite recursion (StackOverflowError)
,这两者之间有什么区别?
注意:
这些是 jackson 的注释。
最佳答案
假设我们有
private class Player {
public int id;
public Info info;
}
private class Info {
public int id;
public Player parentPlayer;
}
// something like this:
Player player = new Player(1);
player.info = new Info(1, player);
序列化
@JsonIgnore
private class Info {
public int id;
@JsonIgnore
public Player parentPlayer;
}
和
@JsonManagedReference
+ @JsonBackReference
private class Player {
public int id;
@JsonManagedReference
public Info info;
}
private class Info {
public int id;
@JsonBackReference
public Player parentPlayer;
}
将产生相同的输出。上面演示示例的输出是:
{"id":1,"info":{"id":1}}
反序列化
这是主要区别,因为使用
@JsonIgnore
反序列化只会将该字段设置为null,因此在我们的示例中parentPlayer将为== null。
但是有了
@JsonManagedReference
+ @JsonBackReference
,我们将在那里获得Info
引用关于java - @JsonIgnore和@ JsonBackReference,@ JsonManagedReference之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37392733/