一尘不染

Json和循环引用异常

json

我有一个对象,该对象具有对另一个对象的循环引用。考虑到这些对象之间的关系,这是正确的设计。

为了显示

Machine => Customer => Machine

不出所料,当我尝试使用Json序列化计算机或客户对象时遇到了一个问题。我不确定是如何解决此问题的,因为我不想破坏计算机和客户对象之间的关系。解决此问题有哪些选择?

编辑

目前,我正在使用Controller基类提供的Json方法。因此,我正在做的序列化基本如下:

Json(machineForm);

阅读 273

收藏
2020-07-27

共1个答案

一尘不染

更新:

不要尝试使用NonSerializedAttribute,因为JavaScriptSerializer显然会忽略它。

而是使用ScriptIgnoreAttributein System.Web.Script.Serialization

public class Machine
{
    public string Customer { get; set; }

    // Other members
    // ...
}

public class Customer
{
    [ScriptIgnore]
    public Machine Machine { get; set; }    // Parent reference?

    // Other members
    // ...
}

这样,当您将a Machine投入该Json方法时,它将遍历从Machineto
的关系,Customer但不会尝试从Customerto 返回Machine

关系仍然存在,您的代码可以随意执行,但是JavaScriptSerializerJson方法使用的)将忽略它。

2020-07-27