我有这个对象的Parent属性引用相同类型的另一个对象:
[JsonObject(IsReference = true)] class Group { public string Name { get; set; } public Group(string name) { Name = name; Children = new List<Group>(); } public IList<Group> Children { get; set; } public Group Parent { get; set; } public void AddChild(Group child) { child.Parent = this; Children.Add(child); } }
序列化工作正常,导致json看起来像这样:
{ "$id": "1","Name": "Parent","Children": [ { "$id": "2","Name": "Child","Children": [],"Parent": { "$ref": "1" } } ],"Parent": null }
但反序列化不起作用. Parent属性返回null.
测试看起来像这样:
[Test] public void Test() { var child = new Group("Child"); var parent = new Group("Parent"); parent.AddChild(child); var json = JsonConvert.SerializeObject(parent,Formatting.Indented); Debug.WriteLine(json); var deserializedParent = (Group) JsonConvert.DeserializeObject(json,typeof(Group)); Assert.IsNotNull(deserializedParent.Children.First().Parent); }
我究竟做错了什么?任何帮助赞赏!