首页 > 解决方案 > System.Text.Json.JsonConverter:如何确定我们是否正在序列化更深层次的对象或数组(在第一次 Write() 调用之后)?

问题描述

我正在序列化对象(类似于 EF 实体)或引用其他对象的对象列表。对象的引用被序列化,但它们的引用不会被序列化,而是我写了一个 int ID。问题是如果我们正在序列化一个列表,那么 writer.CurrentDepth 在第一次写入时从 1 开始,如果我们正在序列化一个对象,则从 0 开始。所以在列表中,我应该在深度 2 处停止序列化,在深度 1 处停止序列化,但我不知道我是在序列化列表还是对象,因为除了 writer.CurrentDepth 我不知道关于状态的任何其他信息序列化,我们在这个过程中的位置。如何确定我们是否在更深层次序列化对象或数组?我可以在第一次调用 Write 时获取此信息,但如何在下一次 Write 调用中获取此信息?

如果我们正在序列化对象或数组,我可以使用静态变量或范围服务来存储,但这看起来很丑陋。

标签: c#json.net-coreserializationsystem.text.json

解决方案


推荐阅读