JSON自引用循环说明

时间:2010-07-13 11:48:22

标签: c# json asp.net-ajax jquery

我正在使用C#,AJAX和JSON进行一些工作,并且我收到了自我引用循环错误。我正在设法使用JsonIgnore属性解决这个问题,但我想知道是否有人可以给我一个关于这里实际发生的事情的正确解释。

非常感谢。

戴夫

1 个答案:

答案 0 :(得分:5)

我们没有详细介绍您的问题,但它可能正是您所描述的内容:自我引用循环或循环引用链。

假设您有一个User类型的变量,其属性为public UserImage Image。现在,假设类型UserImage具有引用回用户的属性User

在您的.NET代码中,就是这样。 myImage.User为您提供了用户,myUser.Image为您提供了图片。但是想象一下你想序列化myUser(比如JSON)。然后你必须循环遍历User的每个属性并以递归方式序列化 。序列化器将像这样开始

{ "ID": 1, "Image": { ...

现在它必须序列化用户图像。请记住UserImage有变量“User”。

{ "ID": 1, "Image": { "Path": "image.src", "User": {

但是用户与我们尝试引用的用户完全相同

{ "ID": 1, "Image": { "Path": "image.src", "User": { "ID": 1, "Image":

现在我们必须序列化那个用户的图像,但这又是与以前相同的图像:

{ "ID": 1, "Image": { "Path": "image.src", "User": { "ID": 1, "Image": { "Path": "image.src", "User": { "ID": 1, "Image": { "Path": "image.src", "User": { "ID": 1, "Image": { "Path": "image.src", "User": 

因此,如果我们不断序列化循环参考,我们永远不会达到最终产品。