C# 将键值对的SQL行序列化为JSON对象

C# 将键值对的SQL行序列化为JSON对象,c#,json,json.net,C#,Json,Json.net,我正在使用asp.net c#构建一个web表单,以生成JSON字符串。我有一个SQL Server表,其中包含列ID、列名称、父ID和值 对于特定ID,如果ID=parentId,则它是父列,而如果ID!=parentid则它是一个子项,并且有一个父项。我将它们拉入一个datatable,从中我需要在标签中打印一个JSON字符串(如在实际输出中) 我尝试使用Newtonsoft.Json,如下所示 foreach (DataRow row in JSONInfoTable.Rows) { st

我正在使用asp.net c#构建一个web表单,以生成JSON字符串。我有一个SQL Server表,其中包含列ID、列名称、父ID和值

对于特定ID,如果ID=parentId,则它是父列,而如果ID!=parentid则它是一个子项,并且有一个父项。我将它们拉入一个datatable,从中我需要在标签中打印一个JSON字符串(如在实际输出中)

我尝试使用Newtonsoft.Json,如下所示

foreach (DataRow row in JSONInfoTable.Rows)
{
string result = Newtonsoft.Json.JsonConvert.serializeObject(row);
testlabel.Text = result;
}
但我从上面的代码中得到以下结果

{"Columnname":"Parent1","Value:100"}...
实际输出JSON(在btnclick事件后打印在Webform标签中)

SQL Server:GetJSON表

Id   Columnname  ParentId   Value 
----------------------------------
 1   Parent1         1       100
 2   Parent2         2       NULL
 3   Child1          2       300
 4   Child2          2       40
C#Datatable(从GetJSON表中提取数据)


您需要按Columnname分组,然后将其序列化:

JsonConvert.serializeObject(JSONInfoTable.AsEnumerable().GroupBy(row => row.Columnname));

您需要按Columnname分组,然后将其序列化:

JsonConvert.serializeObject(JSONInfoTable.AsEnumerable().GroupBy(row => row.Columnname));
JsonConvert.serializeObject(JSONInfoTable.AsEnumerable().GroupBy(row => row.Columnname));