【问题标题】:serialise a c# datatable with a hierarchy as json heirachy将具有层次结构的#数据表序列化为 json 层次结构
【发布时间】:2013-12-30 20:22:15
【问题描述】:

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

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 序列化器在层次结构中序列化一个级别,我原以为这是一个常见问题。有没有一种简单的方法可以将具有层次结构的 datTable 转换为具有层次结构的 json 字符串?

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

谢谢, 丹

【问题讨论】:

  • Newtonsoft.JSON 绝对可以序列化多层对象。您是否尝试过将数据表重新构建为匿名类型?
  • 如何将表构建为匿名类型?
  • 我说错了,我认为您不能从数据表转到匿名类型,至少不容易。您可以通过以下方式强制转换它:var people = myDataTable.Rows.Cast<MyComplexPeopleModel>() 这将为您提供 Newtonsoft 可以处理的复杂类型的 IEnumerable。
  • 我创建了一个具有父子属性的对象(称为 myObj),并将我的数据表加载到对象列表中。所以我现在有一个列表 将其序列化为我想要的输出的最佳方法是什么?
  • 您可以使用Newtonsoft:string json = Newtonsoft.Json.JsonConvert.SerializeObject(myObj);

标签: c# json.net hierarchy


【解决方案1】:

这里是dataTable serialization的例子

或者你可以从dataTable创建IEnumerable<ComplexData>并序列化

【讨论】:

  • 谢谢 - 我需要先了解更多关于从我的数据创建 IEnumberables 的信息,然后才能弄清楚这是否能回答我的问题!我会回来的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多