private void LoadArray(JToken value, JsonTreeNode node) { foreach (var item in value) { AddNode(node, null, item); } }
private void LoadObject(JObject obj, JsonTreeNode node) { foreach (var item in obj) { AddNode(node, item.Key, item.Value); } }
internal static JsonTreeNode CreateNode(string property, JToken item) { NodeType type; string text; string textWhenSelected = null; if (item.Type == JTokenType.Object || item.Type == JTokenType.Array) { text = property; textWhenSelected = text; } else { type = NodeType.Value; string value = item.ToString(); text = property == null ? value : string.Format($"{property}: {value}"); textWhenSelected = string.Format($"{text} (type: {item.Type})"); } type = item.Type == JTokenType.Object ? NodeType.Object : item.Type == JTokenType.Array ? NodeType.Array : NodeType.Value; var node = new JsonTreeNode(type, text, textWhenSelected); node.ImageKey = item.Type.ToString(); node.SelectedImageKey = node.ImageKey; return(node); }
private void AddNode(JsonTreeNode parentNode, string property, JToken item) { var node = JsonTreeNodeCreator.CreateNode(property, item); parentNode.Nodes.Add(node); if (item.Type == JTokenType.Array) { LoadArray(item, node); } if (item.Type == JTokenType.Object) { LoadObject(item as JObject, node); } }
private void LoadTree(JObject json) { Nodes.Clear(); var rootNode = new JsonTreeNode(NodeType.Object, "(root)"); Nodes.Add(rootNode); SelectedNode = rootNode; rootNode.ImageKey = rootNode.NodeType.ToString(); rootNode.SelectedImageKey = rootNode.ImageKey; LoadObject(json, rootNode); rootNode.Expand(); }