實體類雙向映射進行Json序列化時出現無限循環的解決問題


1.@JsonIgnoreProperties

指定的字段不會被序列化,如下則ExamPaper的directory字段不會被序列化

@OneToMany(mappedBy = "directory",  fetch = FetchType.LAZY)
@JsonIgnoreProperties("directory")
private List<ExamPaper> examPapers;

 

2.@JsonIgnore

被注解的字段不會被序列化

 

3.@JsonManagedReference和@JsonBackReference

序列化時,@JsonBackReference標注的屬性在會被忽略。@JsonManagedReference標注的屬性則會被序列化。

在序列化時,@JsonBackReference的作用相當於@JsonIgnore,此時可以沒有@JsonManagedReference。

反序列化時,如果沒有@JsonManagedReference,則不會自動注入@JsonBackReference標注的屬性(被忽略的父或子);如果有@JsonManagedReference,則會自動注入自動注入@JsonBackReference標注的屬性。

 

4.@JsonIdentityInfo

被注解的實體類每次被序列化時,Jackson都會被為它生成一個標識id,若遇到id相同的對象(即同一個對象),則不會再次對其序列化,直接忽略,可以斷絕循環引用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM