title: Generic method to convert a flat JSON array to nested JSON
body: <p>I have a JSON object as below</p>
  
  <pre><code>[
    {
      "Id": 7,
      "Name": "Colocation Folder",
      "ParentId": 1,
      "depth": 0
    },
    {
      "Id": 8,
      "Name": "CoLo Real Estate",
      "ParentId": 7,
      "depth": 1
    },
    {
      "Id": 10,
      "Name": "CoLo: Burst",
      "ParentId": 7,
      "depth": 1
    },
    {
      "Id": 34,
      "Name": "CoLo Dedicated Bandwidth",
      "ParentId": 7,
      "depth": 1
    },
    {
      "Id": 10035,
      "Name": "Infrastructure as a Service",
      "ParentId": 7,
      "depth": 1
    },
    {
      "Id": 10037,
      "Name": "Software as a Service",
      "ParentId": 7,
      "depth": 1
    },
    {
      "Id": 10038,
      "Name": "IaaS Component Upgrade",
      "ParentId": 7,
      "depth": 1
    },
    {
      "Id": 668,
      "Name": "CoLo Misc Folder",
      "ParentId": 7,
      "depth": 1
    },
    {
      "Id": 758,
      "Name": "CoLo: Conduit Fee",
      "ParentId": 668,
      "depth": 2
    },
    {
      "Id": 765,
      "Name": "CoLo: Private VLAN",
      "ParentId": 668,
      "depth": 2
    }
  ]
  </code></pre>
  
  <p>The <code>Id</code> and <code>ParentId</code> fields show the relation between the items. I need to make it as a nested JSON using C#.
  Since there will be many such models, I don't want to create individual classes for each model. Is there a generic approach in C# that will take a flat JSON array, take the <code>ID</code> and <code>ParentId</code> fields as input and then return me a nested JSON with all other fields in the array as well? For example, I am looking for an output of nested JSON as below:</p>
  
  <pre><code>[
    {
      "Id": 7,
      "Name": "Colocation Folder",
      "items": [
        {
          "Id": 8,
          "Name": "CoLo Real Estate",
          "ParentId": 7
        },
        {
          "Id": 10,
          "Name": "CoLo: Burst",
          "ParentId": 7
        },
        {
          "Id": 34,
          "Name": "CoLo Dedicated Bandwidth",
          "ParentId": 7
        },
        {
          "Id": 10035,
          "Name": "Infrastructure as a Service",
          "ParentId": 7
        },
        {
          "Id": 10037,
          "Name": "Software as a Service",
          "ParentId": 7
        },
        {
          "Id": 10038,
          "Name": "IaaS Component Upgrade",
          "ParentId": 7
        },
        {
          "Id": 668,
          "Name": "CoLo Misc Folder",
          "ParentId": 7,
          "items": [
            {
              "Id": 758,
              "Name": "CoLo: Conduit Fee",
              "ParentId": 668
            },
            {
              "Id": 765,
              "Name": "CoLo: Private VLAN",
              "ParentId": 668
            }
          ]
        }
      ]
    }
  ]
  </code></pre>