关闭
搜索历史

清除历史

热门搜索

网络工作室网站建设seo优化小程序

零基础干货

零基础干货

SERVICE CENTER

C# dataTable转json的几种方法

网站建设 2021/10/16 8:34:00    98web    阅读 144

方法1:使用StringBuilder

这是Json样本数据的样子: {"姓名 ":"张三", "年龄":"30"}。Json里用花括号保存对象,它可以包含多个名称/值对。所以使用StringBuilder我们可以创建一个类似的Json字符串。

由于要使用StringBuilder类,我们首先需要导入System.Text命名空间,如下:

using System.Text;

下面的代码将生成一个Json字符串,遍历DataTable的行和列,获取数据,添加到一个StringBuilder对象 JsonString,然后返回这个对象。

public string DataTableToJson(DataTable table)

{

var JsonString = new StringBuilder();

if (table.Rows.Count > 0)

{

JsonString.Append("[");

for (int i = 0; i < table.Rows.Count; i++)

{

JsonString.Append("{");

for (int j = 0; j < table.Columns.Count; j++)

{

if (j < table.Columns.Count - 1)

{

JsonString.Append("\"" + table.Columns[j].ColumnName.ToString() + "\":" + "\"" + table.Rows[i][j].ToString() + "\",");

}

else if (j == table.Columns.Count - 1)

{

JsonString.Append("\"" + table.Columns[j].ColumnName.ToString() + "\":" + "\"" + table.Rows[i][j].ToString() + "\"");

}

}

if (i == table.Rows.Count - 1)

{

JsonString.Append("}");

}

else

{

JsonString.Append("},");

}

}

JsonString.Append("]");

}

return JsonString.ToString();

}

方法2:使用 JavaScriptSerializer.

首先我们添加System.Web.Script.Serialization命名空间,如下:

using System.Web.Script.Serialization;

JavaScriptSerializer这个类是由异步通信层内部使用来序列化和反序列化数据。如果序列化一个对象,就使用序列化方法。反序列化Json字符串,使用Deserialize或DeserializeObject方法。在这里,我们使用序列化方法得到Json格式的数据。代码以下:

public string DataTableToJsonWithJavaScriptSerializer(DataTable table)

{

JavaScriptSerializer jsSerializer = new JavaScriptSerializer();

List < Dictionary < string, object >> parentRow = new List < Dictionary < string, object >> ();

Dictionary < string, object > childRow;

foreach(DataRow row in table.Rows)

{

childRow = new Dictionary < string, object > ();

foreach(DataColumn col in table.Columns)

{

childRow.Add(col.ColumnName, row[col]);

}

parentRow.Add(childRow);

}

return jsSerializer.Serialize(parentRow);

}

方法3:使用Json.Net DLL (Newtonsoft)。

这个方法中要添加Json.Net DLL引用,我们可以从Newtonsoft下载Json.Net DLL,再导入命名空间,代码如下:

using Newtonsoft.Json;

public string DataTableToJsonWithJsonNet(DataTable table)

{

string JsonString=string.Empty;

JsonString = JsonConvert.SerializeObject(table);

return JsonString;

}


TAG标签:dataTable转json
链接地址:/html/tech/wzjs/2021-10-16/158.html
郑重声明:以上内容来源自玖捌网络工作室,转载请注明出处!
39.063ms