在 C# 中,處理循環引用可以通過使用 JsonSerializerSettings
中的 PreserveReferencesHandling
屬性來實現。這個屬性用來指定在序列化和反序列化對象時如何處理循環引用。
你可以通過以下代碼來處理循環引用:
using System;
using Newtonsoft.Json;
public class MyClass
{
public string Name { get; set; }
public MyClass Friend { get; set; }
}
class Program
{
static void Main()
{
MyClass obj1 = new MyClass { Name = "Object 1" };
MyClass obj2 = new MyClass { Name = "Object 2" };
obj1.Friend = obj2;
obj2.Friend = obj1;
JsonSerializerSettings settings = new JsonSerializerSettings
{
PreserveReferencesHandling = PreserveReferencesHandling.Objects
};
string json = JsonConvert.SerializeObject(obj1, settings);
Console.WriteLine(json);
MyClass deserializedObj1 = JsonConvert.DeserializeObject<MyClass>(json, settings);
Console.WriteLine(deserializedObj1.Name);
Console.WriteLine(deserializedObj1.Friend.Name);
}
}
在上面的例子中,我們定義了一個 MyClass
類,它包含一個 Friend
屬性,用來表示對象之間的循環引用。然后我們通過設置 PreserveReferencesHandling.Objects
來處理循環引用,序列化和反序列化對象。