将数据序列化为具有多个循环依赖的json

问题描述 投票:0回答:1

我正在编写一些序列化和反序列化复杂数据结构的代码。

我有一个 C# 数据模型,由三个类组成:

TypeA
TypeB
TypeC
TypeA
引用了
TypeB
TypeB
引用了
TypeA
TypeC
引用了
TypeB
的两个实例。

当尝试使用

System.Text.Json
序列化这些对象时,我遇到了由于循环依赖而导致的问题。

这是我的代码的简化版本:

using System;
using System.Collections.Generic;
using System.Text.Json;

public class TypeA
{
    public int Id { get; set; }
    public string Name { get; set; }
    public TypeB LinkedB { get; set; }
}

public class TypeB
{
    public int Id { get; set; }
    public string Description { get; set; }
    public TypeA LinkedA { get; set; }
}

public class TypeC
{
    public int Id { get; set; }
    public string Note { get; set; }
    public TypeB Reference1 { get; set; }
    public TypeB Reference2 { get; set; }
}

public class ObjectToSerialize
{
    public List<TypeA> Data { get; set; }

    public List<TypeC> links { get; set; }
}

我并不真正关心序列化数据是什么样子,因为我将使用相同的代码将其反序列化回相同的数据模型。

我已经看过了

RefrenceHandler
,但我觉得这只能解决两个参考文献之一,而不是两个。 (如有错误请指正)

我正在寻找一种解决方案来使用

System.Text.Json
序列化这些对象,以便原始引用保持完整。

如何在保持接近原始数据模型和默认方式

System.Text.Json
序列化对象的同时实现这一目标? 我愿意编写自定义转换器、修改数据模型或在必要时使用不同的序列化库。

任何见解或解决方法将不胜感激。

谢谢!

c# json-deserialization
1个回答
0
投票

Newtonsoft有一个解决方案: 请阅读:关于 PreserveReferencesHandling 的说明

© www.soinside.com 2019 - 2024. All rights reserved.