2011-12-06 68 views
5

我發現了很多關於Gson循環引用的文章,但我找不到一個優雅的解決方案。是否有關於Gson「循環引用」的解決方案?

據我所知,一些解決方案是:

  • 設置導致循環引用爲「短暫」的屬性。
  • 排除某些註釋的屬性。

但作爲一個普遍的問題,是否有一些共同的策略來解決這個問題?

+2

一個奇怪的遊戲,唯一贏的方法就是不玩。重新分區,所以你沒有循環引用。 – DwB

+0

僅僅關注序列化,還是在反序列化過程中建立正確的鏈接? –

+0

是的! 看看這個帖子包括 [GraphAdapterBuilder示例] [1] [1]:http://stackoverflow.com/questions/10036958/the-easiest-way-to-刪除雙向遞歸關係 – ouba64

回答

2

據我所知在Gson中沒有針對循環引用的自動化解決方案。 我知道的唯一能夠自動處理循環引用的JSON生成庫是XStream(使用Jettison後端)。編輯:傑克遜還支持處理與@JsonIdentityInfo註釋的循環引用;所以雖然不是自動的(你確實需要標記需要對象ID處理的引用),但它確實可以解決大多數情況。

+1

正確,Gson沒有循環引用的自動解決方案,也沒有提供除標記Java之外的序列化解決方案字段被跳過和/或寫入自定義序列化代碼。另外,傑克遜爲序列化和反序列化問題提供了基於註解的解決方案。請參閱第7點http://www.cowtowncoder.com/blog/archives/2010/11/entry_434.html –

+0

謝謝,我通過間接排除字段解決了問題。當我有空時,我會學習XStream。 –

+0

另外一個用於XStream。我發現的唯一可行的解​​決方案似乎工作。 –

-4

據我所知,最新的Gson版本已經解決了機械損傷。

+0

剛剛嘗試過最新版本(2.3.1),它仍然存在 – DaveB

相關問題