C#双重链接树反序列化问题

时间:2017-05-17 20:08:29

标签: c# json.net deserialization

我正在尝试反序列化一个树,其中每个节点都有其父节点和子节点的引用。序列化树没有问题,但反序列化不保留父引用。相反,它变为空。

我正在尝试简化的内容:

Before deserializing:
{
  "$id": "1",
  "Parent": null,
  "Children": [
    {
      "$id": "2",
      "Parent": {
        "$ref": "1"
      },
      "Children": []
    }
  ]
}

After deserializing:
{
  "$id": "1",
  "Parent": null,
  "Children": [
    {
      "$id": "2",
      "Parent": null,
      "Children": []
    }
  ]
}

输出是这样的:

function arraysMatch(arr1, arr2) {
  return arr1.length === arr2.length && arr1.every(function (char, indx) {
    return arr1[indx] === arr2[indx];
  });
}
var konamiCode = [38, 38, 40, 40, 37, 39, 37, 39, 66, 65, 83];
var code = [];
var timeout = null;
document.addEventListener("keyup", function (event) {
  clearTimeout(timeout);
  if (code.length >= konamiCode.length) {
    code = [];
  }
  code.push(event.keyCode);
  if (arraysMatch(konamiCode, code)) {
    alert("code entered!");
  }
  timeout = setTimeout(function () {
    code = [];
  }, 3000)
});

这是Json.net中的错误吗?有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我不确定JSON的问题是什么,但如果您的孩子没有父引用,那么您可以修复它。

以下是Ed Plunkett提出的建议:

public void fixParents(Node parent)
{
    foreach(Node child in parent.Children)
    {
        fixParents(child);
        child.Parent = parent;
    }
}