JSON自引用循环说明

Dav*_*ave 0 c# jquery json asp.net-ajax

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

非常感谢.

戴夫

Dav*_*und 5

我们没有详细解释您的问题,但它可能正是您所描述的:循环的自引用或循环引用链.

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

在您的.NET代码中,就是这样.myImage.User给你用户,myUser.Image给你图像.但想象一下你想序列化myUser(比如JSON).然后你必须循环每个属性User并递归地序列化.序列化器就像这样开始

{ "ID": 1, "Image": { ...
Run Code Online (Sandbox Code Playgroud)

现在它必须序列化用户图像.并记住UserImage有变量"用户".

{ "ID": 1, "Image": { "Path": "image.src", "User": {
Run Code Online (Sandbox Code Playgroud)

但是用户是我们尝试引用的用户

{ "ID": 1, "Image": { "Path": "image.src", "User": { "ID": 1, "Image":
Run Code Online (Sandbox Code Playgroud)

现在我们必须为该用户序列化图像,但同样的图像与之前的图像相同:

{ "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": 
Run Code Online (Sandbox Code Playgroud)

因此,如果我们不断序列化循环引用,我们永远不会达到最终产品.