在進行數據傳遞的時候,有時咱們須要經過Ajax的方式或者其餘的方式傳遞一個數據列表,能夠將DataTable或者其餘形式的數據列表轉換爲JSON的格式,經過Ajax實體的形式進行傳遞。ui
好比說:spa
/// <summary> /// DataTable 轉換爲Json /// </summary> /// <param name="dt">datatable</param> /// <returns></returns> public string DataTableToJson(DataTable dt) { //若是原數據爲空,則直接返回空結構 if (dt == null || dt.Rows.Count<=0) return "{}"; string columnFirst = ""; List<string> result = new List<string>(); StringBuilder Json = new StringBuilder(); if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { if (columnFirst != dt.Rows[i][0].ToString()) { if (i != 0) { AddNewJson(Json, result, dt); } columnFirst = dt.Rows[i][0].ToString(); result = new List<string>(); for (int k = 0; k < dt.Columns.Count; k++) { result.Add("\"" + dt.Rows[i][k].ToString() + "\""); } } else { for (int k = 0; k < dt.Columns.Count; k++) { if (!result[k].Contains(dt.Rows[i][k].ToString())) { result[k] += ",\"" + dt.Rows[i][k].ToString() + "\""; } } } if (i == dt.Rows.Count - 1) { AddNewJson(Json, result, dt); } } } return Json.ToString(); } /// <summary> /// 添加新的Json /// </summary> /// <param name="Json"></param> /// <param name="result"></param> /// <param name="dt"></param> private void AddNewJson(StringBuilder Json, List<string> result, DataTable dt) { Json.Append("{"); for (int i = 0; i < dt.Columns.Count; i++) { Json.Append("\""); Json.Append(dt.Columns[i].ColumnName); Json.Append("\":"); if (result[i].Contains(",")) { Json.Append("["); Json.Append(result[i]); if (i == dt.Columns.Count - 1) { Json.Append("]"); } else { Json.Append("],"); } } else { Json.Append(result[i]); if (i != dt.Columns.Count - 1) { Json.Append(","); } } } Json.Append("}"); }