c# - System.Text.Json.JsonConverter:如何确定我们是否正在序列化更深层次的对象或数组(在第一次 Write() 调用之后)?
问题描述
我正在序列化对象(类似于 EF 实体)或引用其他对象的对象列表。对象的引用被序列化,但它们的引用不会被序列化,而是我写了一个 int ID。问题是如果我们正在序列化一个列表,那么 writer.CurrentDepth 在第一次写入时从 1 开始,如果我们正在序列化一个对象,则从 0 开始。所以在列表中,我应该在深度 2 处停止序列化,在深度 1 处停止序列化,但我不知道我是在序列化列表还是对象,因为除了 writer.CurrentDepth 我不知道关于状态的任何其他信息序列化,我们在这个过程中的位置。如何确定我们是否在更深层次序列化对象或数组?我可以在第一次调用 Write 时获取此信息,但如何在下一次 Write 调用中获取此信息?
如果我们正在序列化对象或数组,我可以使用静态变量或范围服务来存储,但这看起来很丑陋。
解决方案
推荐阅读
- java - 无法将字符串反序列化为 Java 对象
- java - 在 Gatling 工具中发出 RecordedSimulation 时出错
- entity-framework - 具有索引重载的 EF Core 3.0 选择投影(又名 .Select((entity, index) => new {})失败
- javascript - onended() 在 Safari 或 iOS 上不会触发
- c# - Serilog 范围级别过滤
- jpa - 使用 Quarkus 注入实体监听器
- mysql - 如何确定 utf8 数据编码错误并在 MySql 中更正?
- python - cx-freeze PermissionError: [Errno 13] 权限被拒绝
- acumatica - Acumatica - 需要帮助通过自定义操作更新项目报价屏幕 PM304500 中的活动
- ios - 如何在 Swift 5 的 CoreData 中获取 ObjectID 并搜索特定的 ObjectID?