TreeNode Traverse(TreeNodeCollection parent, string key, ListTreeNode <JsonValue> node) { if (node.IsArray()) { var current = new TreeNode($"{key}({node.GetArrayCount()})"); parent.Add(current); m_nodeMap.Add(current, node); int i = 0; foreach (var x in node.ArrayItems()) { Traverse(current.Nodes, (i++).ToString(), x); } return(current); } else if (node.IsMap()) { var current = new TreeNode(key); parent.Add(current); m_nodeMap.Add(current, node); foreach (var kv in node.ObjectItems()) { Traverse(current.Nodes, kv.Key.GetString(), kv.Value); } return(current); } else { var current = new TreeNode($"{key}: {node.ToString()}"); parent.Add(current); m_nodeMap.Add(current, node); return(current); } }