您的位置:首页 > Web前端 > JavaScript

C#中把Datatable转换为Json的5个代码实例

2015-02-02 11:56 666 查看

实例一:

复制代码 代码如下:

/// <summary>

/// Datatable转换为Json

/// </summary>

/// <param name="table">Datatable对象</param>

/// <returns>Json字符串</returns>

public static string ToJson(DataTable dt)

{

StringBuilder jsonString = new StringBuilder();

jsonString.Append("[");

DataRowCollection drc = dt.Rows;

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

{

jsonString.Append("{");

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

{

string strKey = dt.Columns[j].ColumnName;

string strValue = drc[i][j].ToString();

Type type = dt.Columns[j].DataType;

jsonString.Append("\"" + strKey + "\":");

strValue = StringFormat(strValue, type);

if (j < dt.Columns.Count - 1)

{

jsonString.Append(strValue + ",");

}

else

{

jsonString.Append(strValue);

}

}

jsonString.Append("},");

}

jsonString.Remove(jsonString.Length - 1, 1);

jsonString.Append("]");

return jsonString.ToString();

}

/// <summary>

/// 格式化字符型、日期型、布尔型

/// </summary>

/// <param name="str"></param>

/// <param name="type"></param>

/// <returns></returns>

private static string StringFormat(string str, Type type)

{

if (type == typeof(string))

{

str = String2Json(str);

str = "\"" + str + "\"";

}

else if (type == typeof(DateTime))

{

str = "\"" + str + "\"";

}

else if (type == typeof(bool))

{

str = str.ToLower();

}

else if (type != typeof(string) && string.IsNullOrEmpty(str))

{

str = "\"" + str + "\"";

}

return str;

}

/// <summary>

/// 过滤特殊字符

/// </summary>

/// <param name="s">字符串</param>

/// <returns>json字符串</returns>

private static string String2Json(String s)

{

StringBuilder sb = new StringBuilder();

for (int i = 0; i < s.Length; i++)

{

char c = s.ToCharArray()[i];

switch (c)

{

case '\"':

sb.Append("\\\""); break;

case '\\':

sb.Append("\\\\"); break;

case '/':

sb.Append("\\/"); break;

case '\b':

sb.Append("\\b"); break;

case '\f':

sb.Append("\\f"); break;

case '\n':

sb.Append("\\n"); break;

case '\r':

sb.Append("\\r"); break;

case '\t':

sb.Append("\\t"); break;

default:

sb.Append(c); break;

}

}

return sb.ToString();

}

实例二:

复制代码 代码如下:

public static string CreateJsonParameters(DataTable dt)

{

/**//**/

/**//* /****************************************************************************

* Without goingin to the depth of the functioning of this Method, i will try to give an overview

* As soon as this method gets a DataTable it starts to convert it into JSON String,

* it takes each row and in each row it grabs the cell name and its data.

* This kind of JSON is very usefull when developer have to have Column name of the .

* Values Can be Access on clien in this way. OBJ.HEAD[0].<ColumnName>

* NOTE: One negative point. by this method user will not be able to call any cell by its index.

* *************************************************************************/

StringBuilder JsonString = new StringBuilder();

//Exception Handling

if (dt != null && dt.Rows.Count > 0)

{

JsonString.Append("{ ");

JsonString.Append("\"T_blog\":[ ");

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;

}

}

效果:

{"T_blog":

[

{"id":"14","title":"北京奥运开幕式","addtime":"2008-08-08"},

{"id":"15","title":"网络文化","addtime":"2008-09-12"},

{"id":"17","title":"北京下雨了","addtime":"2008-09-19"},

{"id":"21","title":"深圳地铁通了","addtime":"2008-09-25"}

]

}

实例三:

复制代码 代码如下:

/// <summary>

/// 将一个数据表转换成一个JSON字符串,在客户端可以直接转换成二维数组。

/// </summary>

/// <param name="source">需要转换的表。</param>

/// <returns></returns>

public static string DataTableToJson(DataTable source)

{

if (source.Rows.Count == 0)

return "";

StringBuilder sb = new StringBuilder("[");

foreach (DataRow row in source.Rows)

{

sb.Append("[");

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

{

sb.Append('"' + row[i].ToString() + "\",");

}

sb.Remove(sb.Length - 1, 1);

sb.Append("],");

}

sb.Remove(sb.Length - 1, 1);

sb.Append("]");

return sb.ToString();

}

/// <summary>

/// 反回JSON数据到前台

/// </summary>

/// <param name="dt">数据表</param>

/// <returns>JSON字符串</returns>

public string CreateJsonParameters(DataTable dt)

{

StringBuilder JsonString = new StringBuilder();

//Exception Handling

if (dt != null && dt.Rows.Count > 0)

{

JsonString.Append("{ ");

JsonString.Append("\"TableInfo\":[ ");

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;

}

}

实例四:

复制代码 代码如下:

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();

}

}

实例五:

复制代码 代码如下:

#region DataTable 转换为Json字符串实例方法

/// <summary>

/// GetClassTypeJosn 的摘要说明

/// </summary>

public class GetClassTypeJosn : IHttpHandler

{

/// <summary>

/// 文件名:DataTable 和Json 字符串互转

/// 版权所有:Copyright (C) Create Family Wealth liangjw

/// 创建标示:2013-08-03

/// </summary>

//用法说明实例

public void ProcessRequest(HttpContext context)

{

context.Response.ContentType = "application/json";

context.Response.Charset = "utf-8";

HttpRequest req = context.Request;

string method = req["method"].ToStr().ToLower();

//获取合同明细列表 DataTable 转换为Json字符串

if (method == "txtdate")

{

string json = "";

BO.MakeContractMx bll = new MakeContractMx();

DataSet ds = bll.GetDataTable();

if (ds.Tables.Count > 0)

{

json =ToJson(ds.Tables[0]);

}

context.Response.Write(json);

return;

}

}

public bool IsReusable

{

get

{

return false;

}

}

}

#endregion

#region Json字符串转换为DataTable 实例方法

public DataTable JsonToDataTable(json)

{

DataTable dt= ToDataTable(json);

return dt;

}

#endregion

#region DataTable 转换为Json 字符串

/// <summary>

/// DataTable 对象 转换为Json 字符串

/// </summary>

/// <param name="dt"></param>

/// <returns></returns>

public static string ToJson(this DataTable dt)

{

JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();

javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值

ArrayList arrayList = new ArrayList();

foreach (DataRow dataRow in dt.Rows)

{

Dictionary<string, object> dictionary = new Dictionary<string, object>(); //实例化一个参数集合

foreach (DataColumn dataColumn in dt.Columns)

{

dictionary.Add(dataColumn.ColumnName, dataRow[dataColumn.ColumnName].ToStr());

}

arrayList.Add(dictionary); //ArrayList集合中添加键值

}

return javaScriptSerializer.Serialize(arrayList); //返回一个json字符串

}

#endregion

#region Json 字符串 转换为 DataTable数据集合

/// <summary>

/// Json 字符串 转换为 DataTable数据集合

/// </summary>

/// <param name="json"></param>

/// <returns></returns>

public static DataTable ToDataTable(this string json)

{

DataTable dataTable = new DataTable(); //实例化

DataTable result;

try

{

JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();

javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值

ArrayList arrayList = javaScriptSerializer.Deserialize<ArrayList>(json);

if (arrayList.Count > 0)

{

foreach (Dictionary<string, object> dictionary in arrayList)

{

if (dictionary.Keys.Count<string>() == 0)

{

result = dataTable;

return result;

}

if (dataTable.Columns.Count == 0)

{

foreach (string current in dictionary.Keys)

{

dataTable.Columns.Add(current, dictionary[current].GetType());

}

}

DataRow dataRow = dataTable.NewRow();

foreach (string current in dictionary.Keys)

{

dataRow[current] = dictionary[current];

}

dataTable.Rows.Add(dataRow); //循环添加行到DataTable中

}

}

}

catch

{

}

result = dataTable;

return result;

}

#endregion

#region 转换为string字符串类型

/// <summary>

/// 转换为string字符串类型

/// </summary>

/// <param name="s">获取需要转换的值</param>

/// <param name="format">需要格式化的位数</param>

/// <returns>返回一个新的字符串</returns>

public static string ToStr(this object s, string format = "")

{

string result = "";

try

{

if (format == "")

{

result = s.ToString();

}

else

{

result = string.Format("{0:" + format + "}", s);

}

}

catch

{

}

return result;

}

#endregion
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: