任何人都可以向我展示可以使用它的场景。 我通过 ReferenceLoopHandling.Ignore 理解的是,如果你有一个引用对象B的对象A,那么引用C和C再次引用A(A-> B-> C-> A),然后在序列化时,它将在C和A之间的无限循环中结束,这可以通过下面的使用来避免。我是对的吗?
JsonConvert.SerializeObject(data,
Formatting.Indented,
new JsonSerializerSetting()
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
}
));
我有自我引用循环问题,通过使用上面的问题得到解决,但我想确切地了解它正在做什么,因为上面的行是应用程序的关键(关键肉)
答案 0 :(得分:33)
此处的文档可在此处找到:http://james.newtonking.com/projects/json/help/html/SerializationSettings.htm
在撰写本文时,其行为描述如下(强调我的):
ReferenceLoopHandling.Error
:默认情况下,如果a,Json.NET会出错 遇到引用循环(否则序列化器将进入 无限循环)。
ReferenceLoopHandling.Ignore
:Json.NET将忽略对象 引用循环而不是序列化它们。 第一次出现一个对象 遇到它将像往常一样序列化,但如果对象是 作为自身的子对象遇到序列化程序将跳过 序列化。
ReferenceLoopHandling.Serialize
:此选项强制Json.NET 序列化参考循环中的对象。如果是对象,这很有用 嵌套但不是无限期。