将对象序列化为JSON时防止递归搜索

时间:2016-10-11 09:53:45

标签: c# json serialization json.net

我正在尝试序列化我无法使用Json.NET控制的对象(C#)。这些对象具有许多属性,这些属性是对其他对象的引用,而这些对象本身又具有许多此类属性,依此类推。对JsonConvert.SerializeObject的简单调用似乎没有完成。几分钟后我停了下来。

我无法知道我需要的属性的名称,但有一些方法可以定义我需要的东西(比如层次结构或特定的功能),这样我就可以“显着修剪这棵树”。问题是JsonConvert无论如何都似乎“遍历树”。我已经定义了自己的JsonConverter并覆盖了CanConvert。使用break后面的代码告诉我,即使CanConvert为对象属性返回false,JsonConvert仍会进入该对象并开始检查其属性。

如果我要定义CanConvert使其只返回false,则对序列化的调用仍然永远不会完成。我本来希望JsonConvert只看到对象的“第一级”,一旦确定它们不需要序列化,就不要查看它们。

我使用错误的功能来实现我需要的功能还是我错过了什么?我已经研究过ContractResolvers,但认为它们不是我想要的。我可以使用不同的框架而不是Json.NET甚至是基于XML的东西。有什么建议吗?

0 个答案:

没有答案