手机
当前位置:查字典教程网 >编程开发 >C#教程 >c#扩展datatable转json示例
c#扩展datatable转json示例
摘要:复制代码代码如下:namespacePadWebServices.Model{publicstaticclassDataTableExten...

复制代码 代码如下:

namespace PadWebServices.Model

{

public static class DataTableExtender

{

public static string ToJson(this DataTable dt,string tbName) // this DataTable 标识对DataTable类的扩展

{

StringBuilder JsonString = new StringBuilder();

if (dt != null && dt.Rows.Count > 0)

{

JsonString.Append("{ ");

JsonString.Append("""+tbName+"":[ ");

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

{

JsonString.Append("{ ");

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

{

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

{

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

}

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

{

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

}

}

/*end Of String*/

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

{

JsonString.Append("} ");

}

else

{

JsonString.Append("}, ");

}

}

JsonString.Append("]}");

return JsonString.ToString();

}

else

{

return null;

}

}

}

}

在用到的时候,using扩展类所在的空间,就可以用了。

复制代码 代码如下:

[WebMethod]

public string GetSwt_yBatch()

{

DataTable dt = new BllSwt_yBatch().GetSwt_yBatch();

return dt.ToJson("swt_yBatch");

}

这里的webservice返回的格式还是XML,只不过通过转成JSON的数据,在XML中是这样:

复制代码 代码如下:

<?xml version="1.0" encoding="utf-8" ?>

<string xmlns="http://tempuri.org/">{ "swt_yBatch":[ { "sDoc_c":"test1","sDocAdd_c":"test2","nBatch":"1"},

{ "sDoc_c":"test3","sDocAdd_c":"test4","nBatch":"2"}, { "sDoc_c":"test3","sDocAdd_c":"test4","nBatch":"2"} ]}</string>

没有转成JSON的数据是这样:

复制代码 代码如下:

<?xml version="1.0" encoding="utf-8" ?>

- <DataSet xmlns="http://tempuri.org/">

- <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">

- <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">

- <xs:complexType>

- <xs:choice minOccurs="0" maxOccurs="unbounded">

- <xs:element name="Table1">

- <xs:complexType>

- <xs:sequence>

<xs:element name="sDoc_c" type="xs:string" minOccurs="0" />

<xs:element name="sDocAdd_c" type="xs:string" minOccurs="0" />

<xs:element name="nBatch" type="xs:int" minOccurs="0" />

</xs:sequence>

</xs:complexType>

</xs:element>

</xs:choice>

</xs:complexType>

</xs:element>

</xs:schema>

- <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">

- <NewDataSet xmlns="">

- <Table1 diffgr:id="Table11" msdata:rowOrder="0">

<sDoc_c>test1</sDoc_c>

<sDocAdd_c>test2</sDocAdd_c>

<nBatch>1</nBatch>

</Table1>

- <Table1 diffgr:id="Table12" msdata:rowOrder="1">

<sDoc_c>test3</sDoc_c>

<sDocAdd_c>test4</sDocAdd_c>

<nBatch>2</nBatch>

</Table1>

- <Table1 diffgr:id="Table13" msdata:rowOrder="2">

<sDoc_c>test3</sDoc_c>

<sDocAdd_c>test4</sDocAdd_c>

<nBatch>2</nBatch>

</Table1>

</NewDataSet>

</diffgr:diffgram>

</DataSet>

【c#扩展datatable转json示例】相关文章:

深入IComparable与IComparer的排序实例详解

c#调用c++方法介绍,window api

C# DataTable的详细用法分享

c# dataTable 合并两个列到一个新列中的简单实例

c#中判断字符串是不是数字或字母的方法

c#读取xml文件到datagridview实例

c#中利用委托反射将DataTable转换为实体集的代码

C# DataTable 转换为 实体类对象实例

c# datetime方法应用介绍

解析c#操作excel后关闭excel.exe的方法

精品推荐
分类导航