我有一个树结构,其中节点既有子指针又有父指针。我在让它很好地序列化时遇到了一些问题(这将用于配置,因此它需要对操作/配置管理器具有一定的可读性),并且在尝试了序列化约定和属性的不同组合之后,我仍然卡住了。
我的类型如下所示:
public class NestedConfigurationTree<T> where T : class
{
public InternalNode<T> _root { get; set; }
public class InternalNode<TValue> where TValue : class
{
public Dictionary<string, InternalNode<TValue>> _children { get; set; }
public InternalNode<TValue> _parent { get; set; }
public TValue _value { get; set; }
}
}
当我允许循环引用 ( [JsonObject(IsReference = true)]
) 时,每个节点都会得到如下所示的 JSON:
"$id": "3",
"_children": {
"ConfigurationItem": {
"$id": "4",
"_children": {},
"_parent": {
"$ref": "3"
},
"_value": "Some value"
}
},
这显然使最终用户感到困惑,他们不想要 $id 和 _parent 的东西。由于父级从文档结构中非常明显,我可以避免序列化它并在加载时以某种方式重新创建它吗?
另外,是否可以避免拥有公共财产?我最初将它写为private readonly
字段,但这使得序列化程序忽略了所有这些。