为什么我们需要阻止循环对象引用

时间:2015-05-06 14:55:58

标签: json.net xmlserializer datacontractserializer serializer

我对此很陌生。你能否向我解释为什么"循环参考"是一件坏事,它带来的坏结果是什么?

1 个答案:

答案 0 :(得分:1)

如果您将其序列化为JSON,那么您将获得无限的JSON文档,因为当Serializer将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
                }
            }
        }
    }
}