我有以下類別:序列化樹成JSON對象
TreeNode.cs
public class TreeNode : IEnumerable<TreeNode>
{
public readonly Dictionary<string, TreeNode> _children = new Dictionary<string, TreeNode>();
public readonly string Id;
public TreeNode Parent { get; private set; }
public TreeNode(string id)
{
this.Id = id;
}
public TreeNode GetChild(string id)
{
return this._childs[id];
}
public void Add(TreeNode item)
{
if (item.Parent != null)
{
item.Parent._childs.Remove(item.Id);
}
item.Parent = this;
this._childs.Add(item.Id, item);
}
public IEnumerator<TreeNode> GetEnumerator()
{
return this._childs.Values.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return this.GetEnumerator();
}
public int Count
{
get { return this._childs.Count; }
}
}
FolderStructureNode.cs
public class FolderStructureNode : TreeNode
{
//Some properties such as FolderName, RelativePath etc.
}
所以,當我有一個對象類型爲FolderStructureNode
它實質上是一個樹形數據結構,其中每個節點代表一個文件夾。 我想將這個對象序列化成一個JsonObject。我已經嘗試了兩種 - JavaScriptSerializer和NewtonSoft。在這兩種情況下,我得到一個輸出 -
[
[
[]
],
[
[]
],
[]
]
在序列化的時候,樹看起來是這樣的:
如何序列化,以獲得正確的JSON目的?我是否必須遍歷樹並自己創建json?
我認爲序列化程序查看對象的屬性,所以請嘗試在屬性中包裝_childs字典。 – Christian 2013-04-30 08:29:53
問題是你的'TreeNode'類實現'IEnumerable',因此序列化器會將你的節點序列化爲一個數組(你的情況爲空)。如果沒有看到你的'IEnumerable'實現代碼,我不知道它爲什麼是空的。 –
fero
2013-04-30 08:32:00
我已經添加了整個TreeNode類。 – mridula 2013-04-30 08:41:39