Сериализация дерева в объект 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?

Ответы на вопрос(1)

Ваш ответ на вопрос