• C# 扩展DataTable 转 Json 方法


    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>

    看来,转成JSON,是要省了很多的东西。

  • 相关阅读:
    使用php语言生成二维码
    简单的二级目录 操作
    上传图片 以及做成缩略图
    第一天 :学习node.js
    中文api接口
    PHP中获取当前页面的完整URL
    tp中session用来做权限方法 (缓解mysql压力)
    时间倒计时
    static关键字
    Windows程序内部运行原理简介
  • 原文地址:https://www.cnblogs.com/pigddyou/p/3014994.html
Copyright © 2020-2023  润新知