JSON自参考循环说明

问题描述 投票:0回答:1

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

非常感谢。

戴夫

c# json asp.net-ajax jquery
1个回答
6
投票

我们对您的问题的了解不多,但是可能正是您所描述的:一个自我参照的循环或一个循环的参照链。

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

在您的.NET代码中,仅此而已。 myImage.User为您提供用户,myUser.Image为您提供图像。但是,假设您要序列化myUser(例如,转换为JSON)。然后,您必须循环User的每个属性并递归序列化that。序列化器将像这样开始

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

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

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

但是该用户与我们要引用的用户完全相同

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

现在我们必须为that用户序列化图像,但是,该图像与以前相同:

{
  "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":

因此,如果我们不断序列化循环引用,我们将永远都没有最终产品。

© www.soinside.com 2019 - 2024. All rights reserved.