json infinite recursion stackoverflowerror

Java我的人生發表於2016-11-17

環境:springmvc+hibernate+json

在controller返回資料到統一json轉換的時候,出現了json infinite recursion stackoverflowerror的錯誤,即json在將物件轉換為json格式的資料的時候,出現了無限遞迴呼叫的情況。

具體的情況如下:

A類中,有個屬性:List<B> b, A與B的關係為 OneToMany;在B類中,有屬性A a,引用到A中的欄位id,並作為外來鍵。hibernate查詢結果正常,可以看到返回的A物件中,有b引數值,但在json轉換的時候就出現了無限遞迴的情況。個人分析,應該是json在序列化A中的b屬性的時候,找到了B類,然後序列化B類,而B類中有a屬性,因此,為了序列化a屬性,json又得去序列化A類,如此遞迴反覆,造成該問題。

解決:

在B類中a的getter setter方法上加註解@JsonBackReference,其實自己試過只在setter方法上加@JsonBackReference也夠了。


相關文章