public class Datatableconvertjson
{
Convert #region DataTable into JSON format
<summary>
DataTable converted to JSON format
</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 ();
}
Convert #endregion DataTable into JSON format
#region DataSet into JSON format
<summary>
DataSet into JSON format
</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 ();
}
}
method One:
publicstaticstringGetJSON(DataTable dt) { StringBuilder sb = new StringBuilder(); sb.Append("{\"totalCount\":"+ dt.Rows.Count + ",\"data\":"); sb.Append("["); try { if(dt.Rows.Count > 0) { Hashtable ht = newHashtable(); for(inti = 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(intj = 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) { thrownewException(ex.Message); } finally { sb.Append("]}"); } returnsb.ToString();} |
Method Two: Use Newtonsoft.Json.Net20.dll (click to download)
Add a Newtonsoft.Json.Net20.dll reference first
using System.Data;usingSystem.IO;usingNewtonsoft.Json;/// <summary>将DateTable转为Json格式数据</summary>/// <param name="dt">要转换的DataTable名称</param>/// <param name="dtName">应该是转换后的Key如用Json.dtName得到数据</param>/// <returns></returns>publicstaticstring DataTableToJSON(DataTable dt, stringdtName){ StringBuilder sb = newStringBuilder(); StringWriter sw = newStringWriter(sb); using (JsonWriter jw = newJsonTextWriter(sw)) { JsonSerializer ser = newJsonSerializer(); jw.WriteStartObject(); jw.WritePropertyName(dtName); jw.WriteStartArray(); foreach(DataRow dr indt.Rows) { jw.WriteStartObject(); foreach(DataColumn dc indt.Columns) { jw.WritePropertyName(dc.ColumnName); ser.Serialize(jw, dr[dc].ToString()); } jw.WriteEndObject(); } jw.WriteEndArray(); jw.WriteEndObject(); sw.Close(); jw.Close(); } returnsb.ToString();}
|
DataTable converted to JSON data format code