gpt4 book ai didi

c# - 尝试序列化时出现自引用循环错误

转载 作者:行者123 更新时间:2023-11-30 12:25:56 25 4
gpt4 key购买 nike

我正在尝试序列化一个对象(具体来说,a distance object in the opensource UnitClassLibrary)。因为这个库显然不支持序列化,所以我愿意为我的目的修改它。

但是,我不确定如何诊断正在发生的这个问题。尝试使用 JSON.net 序列化对象时出现以下错误(我也尝试使用内置工具进行 XML 序列化并出现类似错误)。

其他信息:检测到类型为“UnitClassLibrary.DistanceEqualityStrategy”的属性“EqualityStrategy”的自引用循环。路径 ''.

但是,我似乎无法在 Distance 对象的代码中找到任何自引用循环。我该如何诊断这个问题?

我目前只是想像这样序列化:

        Distance newDistance = new Distance();
var json = JsonConvert.SerializeObject(newDistance);

这是导致错误的原因。我可以修改我正在使用的库,但我没有。

最佳答案

在过去,当一个对象中有一个引用回原始对象的嵌套对象时,我已经看到了这个问题。

例如,假设您有一个名为 Project 的对象,它有一个对象类型为 User 的属性。现在 User 对象内部是一个嵌套对象,引用回原始 Project 对象。

我已经能够通过使用以下 JsonSerializerSetting 忽略嵌套循环序列化。

在下面的示例中,项目是项目对象的列表。

string json = Newtonsoft.Json.JsonConvert.SerializeObject(projects, Newtonsoft.Json.Formatting.Indented,
new Newtonsoft.Json.JsonSerializerSettings()
{
ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
}
);

关于c# - 尝试序列化时出现自引用循环错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30310859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com