从 .net 数据集中在 JSON 内添加一个数组
Adding an array inside JSON from .net dataset
我目前正在使用 Newtonsoft 框架将我的产品类别数据集序列化为 json 数据。
我目前的做法是:
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"
}
]
}
]
}
关于如何在数据集中序列化链接数据表的任何想法和建议?
你可以这样做:
- 创建一个 class Table,其中包含 id、名称、urlfriendlyname 和一个列表属性。
- 将您的数据集转换为这个 table 对象。
- 将此 table 对象序列化为 json。
卡拉的回答让我想到了这个,但如果有人想看最终代码:
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
获取存储过程数据集
我目前正在使用 Newtonsoft 框架将我的产品类别数据集序列化为 json 数据。
我目前的做法是:
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"
}
]
}
]
}
关于如何在数据集中序列化链接数据表的任何想法和建议?
你可以这样做:
- 创建一个 class Table,其中包含 id、名称、urlfriendlyname 和一个列表属性。
- 将您的数据集转换为这个 table 对象。
- 将此 table 对象序列化为 json。
卡拉的回答让我想到了这个,但如果有人想看最终代码:
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
获取存储过程数据集