将具有json heirachy层次结构的c#datatable序列化

将具有json heirachy层次结构的c#datatable序列化,c#,json.net,hierarchy,C#,Json.net,Hierarchy,我有一个数据表,其中包含以下数据: Parent Child Dan Heidi Dan Lauren Alan Dan Daphne Alan Alan Lorna Alan Tim 我想输出以下json: [ { 'name': 'Daphne', 'children': [ { 'name': 'Alan', 'children': [ { '

我有一个数据表,其中包含以下数据:

Parent  Child
Dan     Heidi
Dan     Lauren
Alan    Dan
Daphne  Alan
Alan    Lorna
Alan    Tim
我想输出以下json:

[
  {
    'name': 'Daphne',
    'children': [
      {
        'name': 'Alan',
        'children': [
          {
            'name': 'Dan',
            'children': [
              {
                'name': 'Heidi'
              },
              {
                'name': 'Lauren'
              }
            ]
          },
          {
            'name': 'Tim'
          },
          {
            'name': 'Lorna'
          }
        ]
      }
    ]
  }
]
我使用json.net serialiser来序列化层次结构中的一个级别,我认为这是一个常见问题。有没有一种简单的方法可以将具有层次结构的数据表转换为具有层次结构的json字符串

我想关键在于确定层次结构中有多少层和哪些层,我查看了sql server中的hierarchyid数据类型,但需要它似乎有点混乱

谢谢, Dan

以下是示例


或者您可以从dataTable创建
IEnumerable
并序列化Newtonsoft.JSON肯定可以序列化多层对象。您是否尝试过将数据表重新构建为匿名类型?如何将表构建为匿名类型?我说错了,我认为您不能从数据表转换为匿名类型,至少不容易。您可以通过执行以下操作来强制转换它:
var people=myDataTable.Rows.cast()
这将为您提供一个复杂类型的IEnumerable,Newtonsoft可以处理它。我创建了一个具有父对象和子对象属性的对象(称为myObj),并将我的datatable加载到一个对象列表中。因此,我现在有一个列表,可以使用什么样的最佳方法将其序列化到所需的输出中?您可以使用Newtonsoft:
string json=Newtonsoft.json.JsonConvert.SerializeObject(myObj)谢谢-我需要了解更多关于从我的数据创建IEnumberables的信息,然后才能确定这是否回答了我的问题!我会回来的!