我知道这两个@JsonIgnore和@JsonManagedReference,@JsonBackReference用于解决Infinite recursion (StackOverflowError),就是这两者之间的区别?
3 回答
米脂
TA贡献1836条经验 获得超3个赞
用于解决无限递归(StackOverflowError)
@JsonIgnore并不是为了解决无限递归问题而设计的,它只是忽略了带注释的属性被序列化或反序列化。但是,如果字段之间存在双向链接,则由于会@JsonIgnore忽略带注释的属性,因此可以避免无限递归。
在另一方面,@JsonManagedReference和@JsonBackReference旨在处理领域之间的双向联动,一个家长的角色,另一个用于儿童分别作用:
为避免此问题,应处理链接,以使对带@JsonManagedReference注释的属性进行正常处理(正常序列化,无需反序列化的特殊处理),并且对带@JsonBackReference注释的属性不进行序列化。在反序列化期间,其值设置为具有“托管”(转发)链接的实例。
回顾一下,如果您在序列化或反序列化过程中不需要这些属性,可以使用@JsonIgnore。否则,使用@JsonManagedReference/ @JsonBackReference对是可行的方法。
qq_花开花谢_0
TA贡献1835条经验 获得超7个赞
我在这里有一个类似的问题,在这里我需要解析递归字段,看起来也许我需要使用@JsonManagedReference
但不确定它会如何工作?我尝试使用JsonManagedReference
,JsonBackReference
但似乎不起作用,每次遇到异常时,我都想看看您是否可以帮助我。
添加回答
举报
0/150
提交
取消