【问题标题】:why do we need to prevent Circular Object References为什么我们需要防止循环对象引用
【发布时间】:2015-05-06 14:55:57
【问题描述】:

我是新手。能否请您解释一下为什么“循环引用”是一件坏事,它可能带来的坏结果是什么?

【问题讨论】:

  • 也许谷歌搜索会更合适?

标签: json.net xmlserializer datacontractserializer serialization


【解决方案1】:

如果您将其序列化为 JSON,那么您将获得一个无限的 JSON 文档,因为此时序列化器将 CTest 对象序列化为 JSON 并且他到达Other 属性,此属性由其自身和序列化器引用从序列化这个对象开始。等等。

public class CTest
{
    public CTest Other { get; set; }
    public string Description { get; set; }
}

[Test]
public void Circulartest()
{
    CTest instance = new CTest();
    instance.Description = "Hello";
    instance.Other = instance;

    JsonConvert.SerializeObject(instance);
}

这将导致以下 JSON 文件

{
    "Description": "Hello"
    "Other":
    {
        "Description": "Hello"
        "Other":
        {
            "Description": "Hello"
            "Other":
            {
                "Description": "Hello"
                "Other":
                {
                    ....never ending story
                }
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 2019-08-21
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    • 2019-10-29
    • 1970-01-01
    • 2020-04-03
    相关资源
    最近更新 更多