2016-12-09 3 views
0

В настоящее время я использую среду Newtonsoft для сериализации набора данных категорий товаров в json-данных.Добавление массива внутри JSON из .net dataset

Текущий путь я сделать это:

Public Function Category() As String 
     Try 
      Dim ds As DataSet = getDataSetFromPTLSAGE("website.CategoryList", db_conx("xxxxxxxxxxxx")) 
      Dim string_ As String 
      string_ = JsonConvert.SerializeObject(ds, Newtonsoft.Json.Formatting.Indented) 
      Return string_ 
     Catch ex As Exception 
      Return ex.ToString 
     End Try 

    End Function 

Это хорошо работает и дает результаты, как это:

{ 
    "Table": [ 
    { 
     "Id": "21", 
     "Name": "Accessories", 
     "URLFriendlyName": "accessories" 
    }, 
    { 
     "Id": "06", 
     "Name": "Baby", 
     "URLFriendlyName": "baby" 
    }, 
    { 
     "Id": "01", 
     "Name": "Bath & Shower", 
     "URLFriendlyName": "bath-shower" 
    }, 
    { 
     "Id": "18", 
     "Name": "Books & Stationery", 
     "URLFriendlyName": "books-stationery" 
    } 
    ] 
} 

Теперь то, что я хотел бы сделать, это вставить подкатегорий в JSON вывод. Я могу легко получить данные подкатегории и поместить их в набор данных, но лучший способ иметь массив объектов внутри текущего объекта. Вывод должен выглядеть следующим образом:

{ 
    "Table": [ 
    { 
     "Id": "21", 
     "Name": "Accessories", 
     "URLFriendlyName": "accessories", 
     "SubCategory": [ 
        { 
          "Id":"01", 
          "Name":"Travel", 
          "URLFriendlyName":"travel" 
        }, 
        { 
          "Id":"02", 
          "Name":"Umbrella", 
          "URLFriendlyName":"umbrella" 
        } 
        ] 
    } 
    ] 
} 

Любые мысли и предложения, как я бы сериализация связанного DataTable внутри набора данных?

+1

Один из способов сделать это - создать таблицу классов, которая содержит список . Преобразуйте свой набор данных в этот класс и сериализуйте этот класс в json. – Carra

ответ

1

Вы можете сделать это следующим образом:

  • Создайте класс таблицу, которая содержит идентификатор, имя, urlfriendlyname и список свойств.
  • Преобразуйте свой набор данных в этот объект таблицы.
  • Сериализовать этот объект таблицы json.
2

Это был ответ Карра, что привело меня к этому, но в случае, если кто-то хочет, чтобы увидеть окончательный код:

Public Class Class1 
    Public Function Category() As String 
     Try 
      Dim _categorylist As New CategoryList 
      _categorylist.Categories = New List(Of Categories) 
      Dim ds As DataSet = getDataSetFromSQL("website.CategoryList", db_conx("xxxxxxxx")) 
      If ds.Tables(0).Rows.Count > 0 Then 
       For i = 0 To ds.Tables(0).Rows.Count - 1 
        Dim _category As New Categories 
        Dim id As String = ds.Tables(0).Rows(i)("Id").ToString.Trim 
        _category.Id = id 
        _category.Name = ds.Tables(0).Rows(i)("Name").ToString.Trim 
        _category.URLFriendlyName = ds.Tables(0).Rows(i)("URLFriendlyName").ToString.Trim 
        _category.SubCategories = New List(Of SubCategories) 
        Dim subDs As DataSet = getDataSetFromSQL("website.SubCategoryList", db_conx("xxxxxxxx"), "@id", id) 
        If subDs.Tables(0).Rows.Count > 0 Then 
         For x = 0 To subDs.Tables(0).Rows.Count - 1 
          Dim _subCategory As New SubCategories 
          _subCategory.Id = subDs.Tables(0).Rows(x)("Id").ToString.Trim 
          _subCategory.Name = subDs.Tables(0).Rows(x)("Name").ToString.Trim 
          _subCategory.URLFriendlyName = subDs.Tables(0).Rows(x)("URLFriendlyName").ToString.Trim 
          _category.SubCategories.Add(_subCategory) 
         Next x 
        End If 
        _categorylist.Categories.Add(_category) 
       Next 
      End If 
      Return JsonConvert.SerializeObject(_categorylist, Newtonsoft.Json.Formatting.Indented) 
     Catch ex As Exception 
      Return ex.ToString 
     End Try 
    End Function 
End Class 

Public Class CategoryList 
    Public Property Categories() As List(Of Categories) 
End Class 

Public Class Categories 
    Public Property Id() As String 
    Public Property Name() As String 
    Public Property URLFriendlyName() As String 
    Public Property SubCategories As List(Of SubCategories) 
End Class 

Public Class SubCategories 
    Public Property Id() As String 
    Public Property Name() As String 
    Public Property URLFriendlyName() As String 
End Class 

Обратите внимание, что функция getDataSetFromSql просто вспомогательная функция, я создан, чтобы помочь я быстро получаю наборы данных хранимых процедур из SQL

+0

Рад, что я мог бы помочь :) – Carra

Смежные вопросы