我想在JSON.NET中序列化一個對象圖,其中一個Galaxy包含StarSystems,一個StarSystem包含行星,一個Planet包含一個殖民地,一個殖民地有一個所有者,而銀河也有一個帝國列表,每個列表都有一個探索過的StarSystems列表。所以StarSystem,Planet和Empire之間有一個循環參考。JSON.NET靜靜地忽略循環引用,並設置鏈中的任意鏈接爲null來解決它們
我不明白的是我在序列化對象圖時得到的行爲。當我將參考循環處理設置爲默認值時,而不是在將參考循環處理設置爲默認值時嘗試序列化所有內容,而不是在將其設置爲序列化模式時將所有內容序列化,這似乎是序列化鏈中的幾個鏈接,然後放棄並設置任意值(在我的情況下,探索明星系統)爲空。當然,這會在應用程序的其他地方導致崩潰,當它尋找星系時,只會發現空值!
這可能與鏈中的一些鏈接不是直接引用而是集合有關嗎?例如。一個帝國沒有一個探索過的星系,而是一個列表。
那麼我該如何讓JSON.NET序列化一切?我是否需要消除循環引用,並在對象模型中傳遞ID的對象而不是實際的對象引用?我真的不想爲了序列化目的而這麼做!
你有一些代碼嗎? – 2013-05-10 00:32:59
JSON.NET應該沒有任何問題序列化任何對象圖(或正確恢復它)。很可能你的代碼被破壞(例如,通過在屬性設置器中做出意想不到的事情)。發佈一些代碼.. – 2013-05-10 00:43:05
不確定什麼代碼會有用 - 當我調用序列化程序時的代碼?還有別的嗎? (如果我不保存並重新加載遊戲,只是在內存中工作,一切都很正常。) – ekolis 2013-05-10 07:13:41