DataTable轉為JSON資料格式代碼

來源:互聯網
上載者:User

標籤:blog   http   color   io   os   ar   strong   for   資料   

public class DataTableConvertJson
{

#region dataTable轉換成Json格式
/// <summary>
/// dataTable轉換成Json格式
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string DataTable2Json(DataTable dt)
{
StringBuilder jsonBuilder = new StringBuilder();
jsonBuilder.Append("{\"");
jsonBuilder.Append(dt.TableName);
jsonBuilder.Append("\":[");
jsonBuilder.Append("[");
for (int i = 0; i < dt.Rows.Count; i++)
{
jsonBuilder.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
jsonBuilder.Append("\"");
jsonBuilder.Append(dt.Columns[j].ColumnName);
jsonBuilder.Append("\":\"");
jsonBuilder.Append(dt.Rows[i][j].ToString());
jsonBuilder.Append("\",");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("},");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("]");
jsonBuilder.Append("}");
return jsonBuilder.ToString();
}

#endregion dataTable轉換成Json格式
#region DataSet轉換成Json格式
/// <summary>
/// DataSet轉換成Json格式
/// </summary>
/// <param name="ds">DataSet</param>
/// <returns></returns>
public static string Dataset2Json(DataSet ds)
{
StringBuilder json = new StringBuilder();

foreach (DataTable dt in ds.Tables)
{
json.Append("{\"");
json.Append(dt.TableName);
json.Append("\":");
json.Append(DataTable2Json(dt));
json.Append("}");
} return json.ToString();
}
#endregion

/// <summary>
/// Msdn
/// </summary>
/// <param name="jsonName"></param>
/// <param name="dt"></param>
/// <returns></returns>
public static string DataTableToJson(string jsonName, DataTable dt)
{
StringBuilder Json = new StringBuilder();
Json.Append("{\"" + jsonName + "\":[");
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
Json.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
Json.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":\"" + dt.Rows[i][j].ToString() + "\"");
if (j < dt.Columns.Count - 1)
{
Json.Append(",");
}
}
Json.Append("}");
if (i < dt.Rows.Count - 1)
{
Json.Append(",");
}
}
}
Json.Append("]}");
return Json.ToString();
}
}

方法一:

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轉為JSON資料格式代碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.