DataTable转为JSON数据格式代码


方法一:

public static string GetJSON(DataTable dt) 

{ 

    StringBuilder sb = new StringBuilder(); 

    sb.Append("{\"totalCount\":" + dt.Rows.Count + ",\"data\":"); 

    sb.Append("["); 

    try 

    { 

        if (dt.Rows.Count > 0) 

        {

            Hashtable ht = new Hashtable();

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

            {

                ht.Add(i, dt.Columns[i].ColumnName);

            }

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

            {

                sb.Append("{");

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

                {

                    sb.Append(string.Format("\"{0}\":\"{1}\",",

                    ht[j], dt.Rows[i][j].ToString()));

                }

                sb.Remove(sb.ToString().LastIndexOf(","), 1);

                sb.Append("},");

            }

            sb.Remove(sb.ToString().LastIndexOf(","), 1);

            ht.Clear();

            ht = null;

        }

    }  

    catch (Exception ex)

    {

        throw new Exception(ex.Message);

    }

    finally

    {

         sb.Append("]}");

    }

    return sb.ToString();

} 


 

方法二:用Newtonsoft.Json.Net20.dll(点击下载)
先添加 Newtonsoft.Json.Net20.dll 的引用

using System.Data;

using System.IO;

using Newtonsoft.Json;



/// <summary>将DateTable转为Json格式数据</summary>

/// <param name="dt">要转换的DataTable名称</param>

/// <param name="dtName">应该是转换后的Key如用Json.dtName得到数据</param>

/// <returns></returns>

public static string DataTableToJSON(DataTable dt, string dtName)

{

    StringBuilder sb = new StringBuilder();

    StringWriter sw = new StringWriter(sb);



    using (JsonWriter jw = new JsonTextWriter(sw))

    {

        JsonSerializer ser = new JsonSerializer();

        jw.WriteStartObject();

        jw.WritePropertyName(dtName);

        jw.WriteStartArray();

        foreach (DataRow dr in dt.Rows)

        {

            jw.WriteStartObject();



            foreach (DataColumn dc in dt.Columns)

            {

                jw.WritePropertyName(dc.ColumnName);

                ser.Serialize(jw, dr[dc].ToString());

            }



            jw.WriteEndObject();

        }

        jw.WriteEndArray();

        jw.WriteEndObject();



        sw.Close();

        jw.Close();



    }



    return sb.ToString();

}





你可能感兴趣的:(Datatable)