我有一个带有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);
}
}
Run Code Online (Sandbox Code Playgroud)
序列化工作正常,并导致json如下所示:
{
"$id": "1",
"Name": "Parent",
"Children": [
{
"$id": "2",
"Name": "Child",
"Children": [],
"Parent": {
"$ref": "1"
}
}
],
"Parent": null
}
Run Code Online (Sandbox Code Playgroud)
但是反序列化是行不通的。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);
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?任何帮助表示赞赏!
| 归档时间: |
|
| 查看次数: |
1258 次 |
| 最近记录: |