using System.Collections.Generic;
public static void Main()
var node0_1 = new Node { Id = Guid.NewGuid().ToString(), Text = "Node 0-1" };
var node0_2 = new Node { Id = Guid.NewGuid().ToString(), Text = "Node 0-2" };
var node1_1 = new Node { Id = Guid.NewGuid().ToString(), Text = "Item 1-1", Parent = node0_1 };
node0_1.Children.Add(node1_1);
var node1_2 = new Node { Id = Guid.NewGuid().ToString(), Text = "Item 1-2", Parent = node0_1 };
node0_1.Children.Add(node1_2);
var node2_1 = new Node { Id = Guid.NewGuid().ToString(), Text = "Item 2-1", Parent = node0_2 };
node0_2.Children.Add(node2_1);
var node2_2 = new Node { Id = Guid.NewGuid().ToString(), Text = "Item 2-2", Parent = node0_2 };
node0_2.Children.Add(node2_2);
var result = new List<Node>
var output = JsonConvert.SerializeObject(result, new JsonSerializerSettings{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
Console.WriteLine(output);
Children = new List<Node>();
public string Id {get;set;}
public string Text { get; set; }
public string ParentId { get; set; }
public virtual Node Parent { get; set; }
public virtual ICollection<Node> Children { get; set; }