2010-07-13 88 views
0

我正在做一些C#,AJAX和JSON的工作,並且得到一個自引用循環錯誤。我正在設法使用JsonIgnore屬性來解決這個問題,但我想知道是否有人能夠給我一個關於這裏實際發生的事情的正確解釋。JSON自引用循環說明

非常感謝。

戴夫

回答

4

我們不會對您的問題得到太多的細節,但它可能是你所描述的正是:自我指涉的循環,或引用的循環鏈。

假設你有一個User類型的變量,它有一個屬性public UserImage Image。現在,說UserImage類型的屬性User引用回用戶。

在你的.NET代碼中,就是這樣。 myImage.User給你喲你的用戶,myUser.Image給你的圖像。但想象一下,你想序列化myUser(轉換成JSON)。然後,您必須循環使用User的每個屬性並遞歸地序列化,即。串行器會像這樣開始

{ "ID": 1, "Image": { ... 

現在它必須序列化用戶圖像。並且記住UserImage具有變量「用戶」。

{ "ID": 1, "Image": { "Path": "image.src", "User": { 

但用戶是我們正在嘗試引用

{ "ID": 1, "Image": { "Path": "image.src", "User": { "ID": 1, "Image": 

現在我們必須序列圖像爲用戶,同樣的用戶,但是,再次是相同的圖像與以前一樣:

{ "ID": 1, "Image": { "Path": "image.src", "User": { "ID": 1, "Image": { "Path": "image.src", "User": { "ID": 1, "Image": { "Path": "image.src", "User": { "ID": 1, "Image": { "Path": "image.src", "User": 

因此,如果我們不斷序列化循環參考,我們永遠不會達到最終產品。

+0

謝謝 - 這就是我一直在尋找的,只是對實際發生的事情的簡單解釋。非常感謝。 – Dave 2010-07-13 12:03:16

+0

+1謝謝,也幫助了我。 – Renan 2011-02-25 12:44:46