我有一個樹結構,其中節點同時具有子指針和父指針。我遇到了一些問題,以便很好地序列化(這將用於配置,因此它需要對操作/配置管理器稍微可讀),並且在嘗試使用序列化約定和屬性的不同組合後,我仍然陷入困境。在Raven中存儲具有父指針和子指針的樹
我的類型是這樣的:
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
字段,但是這使得序列化程序忽略了所有這些字段。
爲什麼最終用戶在尋找原始的JSON? – 2013-03-20 06:23:13
@AyendeRahien:這是一個配置管理工具,它要求原始數據應該「在數據庫管理工具中易於編輯」。基本上,如果工具中斷,他們希望能夠進入數據庫並更改設置。 – carlpett 2013-03-20 06:44:17