>json.net中的“自我引用循环检测到的错误”(实体数据模型对象)
>使用JsonConvert.SerializeObject
>序列化源自实体数据模型(.EDMX)的普通旧CLR对象(POCO)时,您可能会遇到“检测到的自我引用环”错误。本指南提供解决方案。
利用JsonSerializerSettings
JsonSerializerSettings
类提供对序列化行为的颗粒状控制,包括循环处理。 默认值ReferenceLoopHandling.Error
在遇到圆形参考时会引发异常。 要解决此问题,请调整ReferenceLoopHandling
设置。
ReferenceLoopHandling.Serialize
:这通常是最佳选择。它在防止无限递归的同时序列化对象。
ReferenceLoopHandling.Ignore
:这种方法跳过了递归引用的对象的序列化。
ReferenceLoopHandling.Preserve
:即使使用圆形引用也尝试序列化,但是如果嵌套无限深。
StackOverflowException
>用PoCo实例替换
<code class="language-csharp">JsonConvert.SerializeObject( yourPocoObject, Formatting.Indented, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Serialize } );</code>。 该代码利用
在JSON序列化期间有效地管理循环引用。yourPocoObject
>
以上是在使用JSON.NET序列化实体框架对象时,如何修复'自我引用循环检测到的”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!