2

Converted a TreeView to a JSON format using dynamic keyword and also deserialized. The problem facing in constructing a treeview from a returned dynamic object, using NewtonSoft.Json library.

[JsonConverter(typeof(TreeNodeConverter))]
public class SubTreeNode : TreeNode
{
    public dynamic obj;
}


string str = JsonConvert.SerializeObject(treeView1.Nodes, Formatting.Indented);

dynamic obj = JsonConvert.DeserializeObject(str);

How do I properly parse the returned dynamic object and convert this to a treeview.

Code for constructing treeview:

subNode = new SubTreeNode();
subNode.Text = "RootNode";
subNode.obj = new ExpandoObject();
subNode.obj.Property1 = "Value1";
subNode.obj.Property2 = "Value2";
subNode.obj.Property3 = "Value3";
subNode.obj.Property4 = new ExpandoObject();
subNode.obj.Property4.Complex = "Complex Object";
treeView1.Nodes.Add(subNode);

subNode = new SubTreeNode();
subNode.Text = "Node1";
subNode.obj = new ExpandoObject();
subNode.obj.Property1 = "Value1";
subNode.obj.Property2 = "Value2";
subNode.obj.Property3 = "Value3";
subNode.obj.Property4 = new ExpandoObject();
subNode.obj.Property4.Complex = "Complex Object";

treeView1.Nodes[0].Nodes.Add(subNode);

subNode = new SubTreeNode();
subNode.Text = "Node11";
subNode.obj = new ExpandoObject();
subNode.obj.Property1 = "Value1";
subNode.obj.Property2 = "Value2";
subNode.obj.Property3 = "Value3";
subNode.obj.Property4 = new ExpandoObject();
subNode.obj.Property4.Complex = "Complex Object";

treeView1.Nodes[0].Nodes[0].Nodes.Add(subNode);

subNode = new SubTreeNode();
subNode.Text = "Node2";
subNode.obj = new ExpandoObject();
subNode.obj.Property1 = "Value1";
subNode.obj.Property2 = "Value2";
subNode.obj.Property3 = "Value3";
subNode.obj.Property4 = new ExpandoObject();
subNode.obj.Property4.Complex = "Complex Object";

treeView1.Nodes[0].Nodes.Add(subNode);

subNode = new SubTreeNode();
subNode.Text = "Node21";
subNode.obj = new ExpandoObject();
subNode.obj.Property1 = "Value1";
subNode.obj.Property2 = "Value2";
subNode.obj.Property3 = "Value3";
subNode.obj.Property4 = new ExpandoObject();
subNode.obj.Property4.Complex = "Complex Object";

treeView1.Nodes[0].Nodes[1].Nodes.Add(subNode);

JSON format:

[
  "RootNode",
  {
    "Property1": "Value1",
    "Property2": "Value2",
    "Property3": "Value3",
    "Property4": {
      "Complex": "Complex Object"
    }
  },
  [
    "Node1",
    {
      "Property1": "Value1",
      "Property2": "Value2",
      "Property3": "Value3",
      "Property4": {
        "Complex": "Complex Object"
      }
    },
    [
      "Node11",
      {
        "Property1": "Value1",
        "Property2": "Value2",
        "Property3": "Value3",
        "Property4": {
          "Complex": "Complex Object"
        }
      }
    ],
    "Node2",
    {
      "Property1": "Value1",
      "Property2": "Value2",
      "Property3": "Value3",
      "Property4": {
        "Complex": "Complex Object"
      }
    },
    [
      "Node21",
      {
        "Property1": "Value1",
        "Property2": "Value2",
        "Property3": "Value3",
        "Property4": {
          "Complex": "Complex Object"
        }
      }
    ]
  ]
]
M. Schena
  • 2,039
  • 1
  • 21
  • 29
user3378513
  • 57
  • 2
  • 6

0 Answers0