C# Newtonsoft.json中的ReferenceLoopHandling.Ignore究竟做什么?

C# Newtonsoft.json中的ReferenceLoopHandling.Ignore究竟做什么?,c#,.net,json,json.net,C#,.net,Json,Json.net,谁能给我一个可以使用它的场景。 我通过ReferenceLoopHandling.Ignore所理解的是,如果有一个对象A引用了对象B,B引用了C,而C又引用了A(A->B->C->A),那么在序列化时,它将在C和A之间无限循环,这是可以避免的。我说得对吗 JsonConvert.SerializeObject(data, Formatting.Indented, new JsonSerializerSetting() { R

谁能给我一个可以使用它的场景。 我通过ReferenceLoopHandling.Ignore所理解的是,如果有一个对象A引用了对象B,B引用了C,而C又引用了A(A->B->C->A),那么在序列化时,它将在C和A之间无限循环,这是可以避免的。我说得对吗

 JsonConvert.SerializeObject(data, 
     Formatting.Indented, 
     new JsonSerializerSetting()
         {
             ReferenceLoopHandling = ReferenceLoopHandling.Ignore 
         } 
 ));

我有一个自引用循环问题,通过使用上述方法可以解决,但我想确切地了解它在做什么,因为上面这一行是应用程序的核心部分(关键部分)

有关此问题的文档可在此处获得:

在撰写本文时,行为描述如下(重点是我的):

ReferenceLoopHandling.Error
:默认情况下,如果 遇到引用循环(否则序列化程序将进入 无限循环)

ReferenceLoopHandling.Ignore
:Json.NET将忽略中的对象 引用循环,而不是序列化它们第一次创建对象时 遇到此问题时,它将像往常一样序列化,但如果对象是 作为自身的子对象遇到序列化程序将跳过 正在序列化它。

ReferenceLoopHandling.Serialize
:此选项强制Json.NET 序列化引用循环中的对象。如果对象是 嵌套但不是无限期的


在PreserveReferencesHandling的情况下会发生什么