当前位置: 移动技术网 > IT编程>开发语言>c# > c#扩展datatable转json示例

c#扩展datatable转json示例

2019年07月18日  | 移动技术网IT编程  | 我要评论
复制代码 代码如下:namespace padwebservices.model{   public static class datatableext

复制代码 代码如下:

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>

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网