сериализовать таблицу данных С# с иерархией как json heirachy

У меня есть dataTable со следующими данными:

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, но это кажется немного запутанным.

Спасибо, Дэн


person user1896017    schedule 30.12.2013    source источник
comment
Newtonsoft.JSON определенно может сериализовать многослойные объекты. Вы пытались перестроить таблицу данных как анонимный тип?   -  person siva.k    schedule 31.12.2013
comment
Как мне построить таблицу как анонимный тип?   -  person user1896017    schedule 31.12.2013
comment
Я оговорился, я не думаю, что вы можете перейти от типа данных к анонимному типу, по крайней мере, не легко. Однако вы можете привести его, выполнив: var people = myDataTable.Rows.Cast<MyComplexPeopleModel>() Это даст вам IEnumerable сложного типа, который может обработать Newtonsoft.   -  person siva.k    schedule 31.12.2013
comment
Я создал объект (названный myObj) со свойствами родителя и дочернего элемента и загрузил свои данные в список объектов. Итак, теперь у меня есть список «myObj». Какой метод лучше всего использовать для сериализации этого в желаемый результат?   -  person user1896017    schedule 02.01.2014
comment
Вы можете использовать Newtonsoft: string json = Newtonsoft.Json.JsonConvert.SerializeObject(myObj);   -  person siva.k    schedule 02.01.2014


Ответы (1)