【发布时间】:2017-07-30 14:34:03
【问题描述】:
我想知道这两个注释之间的主要区别是什么?两者都是为了解决无限递归循环问题。但是在示例中
Difference between @JsonIgnore and @JsonBackReference, @JsonManagedReference
@varren 展示了@JsonBackReference 的用法,我认为他也创建了无限递归循环。此外,当我尝试使用@JsonBackReference 时,它还会创建一个与@JsonIgnore 相比的递归循环?那么我们如何管理无限循环的情况才能使用@JsonBackReference呢?
【问题讨论】:
-
仔细查看 varren 的回答中的实际对象:只有单个
Player对象 (Player@914) 和单个Info对象 (Info@915)。也请从该问题中删除您的答案。 -
我删除了它,但你的回答对我没有任何意义。你能用不同的词写吗?
-
我还能怎么形容呢?没有无限递归,因为在反序列化
{id: 1, info: {id: 1}}后,Player和Info都只有一个实例。如果存在无限递归,该示例将产生它,给出错误而不是这两个对象。 Q.E.D. -
但是下面的第二张图片呢,但是使用 JsonManagedReference + JsonBackReference 我们将在那里获得信息参考?它调用一次 PLayer 一次 Info 一次,一次 Player 一次 Info 等等 - 它看起来不是一个不定式循环吗?
-
在第二张图片上,只有 一个 实例
Player@914和只有 一个 实例Info@915。它们都相互引用,并且调试器图像显示 如果 您盲目地跟踪链接,您将进入无限递归,但我们没有,因为@JsonManagedReference + @JsonBackReference工作.
标签: java json loops recursion jackson