私は次のクラスを持っています:
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 を自分で作成する必要がありますか?