using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Text;using System.Data;using System.Data.Common;using System.Collections;using System.Reflection;namespace BJYX.WEB.Public{ ???public class Creat_Json ???{ ???????public Creat_Json() ???????{ ???????????// ???????????// TODO: 在此处添加构造函数逻辑 ???????????// ???????} ???????public static string DataTable2Json(System.Data.DataTable dt) ???????{ ???????????System.Text.StringBuilder jsonBuilder = new System.Text.StringBuilder(); ???????????jsonBuilder.Append("{"); ???????????jsonBuilder.AppendFormat("\"total\":{0}, ", dt.Rows.Count); ???????????jsonBuilder.Append("\"rows\":[ "); ???????????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().Replace("\\", "\\\\").Replace("‘", "‘").Replace("\t", " ").Replace("\r", " ").Replace("\n", "<br/>").Replace("\"", """)); ???????????????????jsonBuilder.Append("\","); ???????????????} ???????????????jsonBuilder.Remove(jsonBuilder.Length - 1, 1); ???????????????jsonBuilder.Append("},"); ???????????} ???????????jsonBuilder.Remove(jsonBuilder.Length - 1, 1); ???????????jsonBuilder.Append("]"); ???????????jsonBuilder.Append("}"); ???????????return jsonBuilder.ToString(); ???????} ???????public static string DataTable2Json(System.Data.DataTable dt, int count) ???????{ ???????????System.Text.StringBuilder jsonBuilder = new System.Text.StringBuilder(); ???????????jsonBuilder.Append("{"); ???????????jsonBuilder.AppendFormat("\"total\":{0}, ", count); ???????????jsonBuilder.Append("\"rows\":[ "); ???????????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().Replace("\\", "\\\\").Replace("‘", "‘").Replace("\t", " ").Replace("\r", " ").Replace("\n", "<br/>").Replace("\"", """)); ???????????????????jsonBuilder.Append("\","); ???????????????} ???????????????jsonBuilder.Remove(jsonBuilder.Length - 1, 1); ???????????????jsonBuilder.Append("},"); ???????????} ???????????jsonBuilder.Remove(jsonBuilder.Length - 1, 1); ???????????jsonBuilder.Append("]"); ???????????jsonBuilder.Append("}"); ???????????return jsonBuilder.ToString(); ???????} ???????public static string DataTableToJson(System.Data.DataTable dt) ???????{ ???????????StringBuilder Json = new StringBuilder(); ???????????Json.Append("["); ???????????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().Replace("\\", "\\\\").Replace("‘", "‘").Replace("\t", " ").Replace("\r", " ").Replace("\n", "<br/>").Replace("\"", """) + "\""); ???????????????????????if (j < dt.Columns.Count - 1) ???????????????????????{ ???????????????????????????Json.Append(","); ???????????????????????} ???????????????????} ???????????????????Json.Append("}"); ???????????????????if (i < dt.Rows.Count - 1) ???????????????????{ ???????????????????????Json.Append(","); ???????????????????} ???????????????} ???????????} ???????????Json.Append("]"); ???????????return Json.ToString().Replace("\\", "\\\\").Replace("\‘", "\\\‘").Replace("\t", " ").Replace("\r", " ").Replace("\n", "<br/>");//.Replace("\"", "‘"); ; ???????} ???????/// <summary> ???????/// Table to JSON By FlexGrid ???????/// </summary> ???????/// <param name="ds"></param> ???????/// <param name="page"></param> ???????/// <returns></returns> ???????public static string DataTableToJson(System.Data.DataTable dt, int page, int total) ???????{ ???????????StringBuilder jsonStr = new StringBuilder(); ???????????jsonStr.Append("{"); ???????????jsonStr.Append("\"page\":" + page + ","); ???????????jsonStr.Append("\"total\":" + total + ","); ???????????jsonStr.Append("\"rows\":"); ???????????jsonStr.Append("["); ???????????foreach (System.Data.DataRow dr in dt.Rows) ???????????{ ???????????????jsonStr.Append("{"); ???????????????foreach (System.Data.DataColumn dc in dt.Columns) ???????????????{ ???????????????????jsonStr.Append("\""); ???????????????????jsonStr.Append(dc.ColumnName); ???????????????????jsonStr.Append("\""); ???????????????????jsonStr.Append(":"); ???????????????????jsonStr.Append("\""); ???????????????????jsonStr.Append(dr[dc].ToString().Trim()); ???????????????????jsonStr.Append("\" ,"); ???????????????} ???????????????jsonStr.Remove(jsonStr.Length - 1, 1); ???????????????jsonStr.Append("}"); ???????????????jsonStr.Append(","); ???????????} ???????????if (dt.Rows.Count > 0) ???????????{ ???????????????jsonStr.Remove(jsonStr.Length - 1, 1); ???????????} ???????????jsonStr.Append("]"); ???????????jsonStr.Append("}"); ???????????return jsonStr.ToString(); ???????} ???????/// <summary> ??????????/// List转成json ???????????/// </summary> ??????????/// <typeparam name="T"></typeparam> ??????????/// <param name="jsonName"></param> ??????????/// <param name="list"></param> ??????????/// <returns></returns> ??????????public static string ListToJson<T>(IList<T> list, string jsonName) ???????{ ???????????StringBuilder Json = new StringBuilder(); ???????????if (string.IsNullOrEmpty(jsonName)) ???????????????jsonName = list[0].GetType().Name; ???????????Json.Append("{\"" + jsonName + "\":["); ???????????if (list.Count > 0) ???????????{ ???????????????for (int i = 0; i < list.Count; i++) ???????????????{ ???????????????????T obj = Activator.CreateInstance<T>(); ???????????????????PropertyInfo[] pi = obj.GetType().GetProperties(); ???????????????????Json.Append("{"); ???????????????????for (int j = 0; j < pi.Length; j++) ???????????????????{ ???????????????????????Type type = pi[j].GetValue(list[i], null).GetType(); ???????????????????????Json.Append("\"" + pi[j].Name.ToString() + "\":" + StringFormat(pi[j].GetValue(list[i], null).ToString(), type)); ???????????????????????if (j < pi.Length - 1) ???????????????????????{ ???????????????????????????Json.Append(","); ???????????????????????} ???????????????????} ???????????????????Json.Append("}"); ???????????????????if (i < list.Count - 1) ???????????????????{ ???????????????????????Json.Append(","); ???????????????????} ???????????????} ???????????} ???????????Json.Append("]}"); ???????????return Json.ToString(); ???????} ???????/// <summary> ??????????/// List转成json ???????????/// </summary> ??????????/// <typeparam name="T"></typeparam> ??????????/// <param name="list"></param> ??????????/// <returns></returns> ??????????public static string ListToJson<T>(IList<T> list) ???????{ ???????????object obj = list[0]; ???????????return ListToJson<T>(list, obj.GetType().Name); ???????} ???????/// <summary> ???????????/// 对象转换为Json字符串 ???????????/// </summary> ???????????/// <param name="jsonObject">对象</param> ???????????/// <returns>Json字符串</returns> ???????????public static string ToJson(object jsonObject) ???????{ ???????????string jsonString = "{"; ???????????PropertyInfo[] propertyInfo = jsonObject.GetType().GetProperties(); ???????????for (int i = 0; i < propertyInfo.Length; i++) ???????????{ ???????????????object objectValue = propertyInfo[i].GetGetMethod().Invoke(jsonObject, null); ???????????????string value = string.Empty; ???????????????if (objectValue is DateTime || objectValue is Guid || objectValue is TimeSpan) ???????????????{ ???????????????????value = "‘" + objectValue.ToString() + "‘"; ???????????????} ???????????????else if (objectValue is string) ???????????????{ ???????????????????value = "‘" + ToJson(objectValue.ToString()) + "‘"; ???????????????} ???????????????else if (objectValue is IEnumerable) ???????????????{ ???????????????????value = ToJson((IEnumerable)objectValue); ???????????????} ???????????????else ???????????????{ ???????????????????value = ToJson(objectValue.ToString()); ???????????????} ???????????????jsonString += "\"" + ToJson(propertyInfo[i].Name) + "\":" + value + ","; ???????????} ???????????jsonString.Remove(jsonString.Length - 1, jsonString.Length); ???????????return jsonString + "}"; ???????} ???????/// <summary> ???????????/// 对象集合转换Json ???????????/// </summary> ???????????/// <param name="array">集合对象</param> ???????????/// <returns>Json字符串</returns> ???????????public static string ToJson(IEnumerable array) ???????{ ???????????string jsonString = "["; ???????????foreach (object item in array) ???????????{ ???????????????jsonString += ToJson(item) + ","; ???????????} ???????????jsonString.Remove(jsonString.Length - 1, jsonString.Length); ???????????return jsonString + "]"; ???????} ???????/// <summary> ???????????/// 普通集合转换Json ???????????/// </summary> ???????????/// <param name="array">集合对象</param> ???????????/// <returns>Json字符串</returns> ???????????public static string ToArrayString(IEnumerable array) ???????{ ???????????string jsonString = "["; ???????????foreach (object item in array) ???????????{ ???????????????jsonString = ToJson(item.ToString()) + ","; ???????????} ???????????jsonString.Remove(jsonString.Length - 1, jsonString.Length); ???????????return jsonString + "]"; ???????} ???????/// <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> ??????????/// DataTable转成Json ???????????/// </summary> ??????????/// <param name="jsonName"></param> ??????????/// <param name="dt"></param> ??????????/// <returns></returns> ??????????public static string ToJson(DataTable dt, string jsonName) ???????{ ???????????StringBuilder Json = new StringBuilder(); ???????????if (string.IsNullOrEmpty(jsonName)) ???????????????jsonName = dt.TableName; ???????????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++) ???????????????????{ ???????????????????????Type type = dt.Rows[i][j].GetType(); ???????????????????????Json.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + StringFormat(dt.Rows[i][j].ToString(), type)); ???????????????????????if (j < dt.Columns.Count - 1) ???????????????????????{ ???????????????????????????Json.Append(","); ???????????????????????} ???????????????????} ???????????????????Json.Append("}"); ???????????????????if (i < dt.Rows.Count - 1) ???????????????????{ ???????????????????????Json.Append(","); ???????????????????} ???????????????} ???????????} ???????????Json.Append("]}"); ???????????return Json.ToString(); ???????} ???????/// <summary> ???????????/// DataReader转换为Json ???????????/// </summary> ???????????/// <param name="dataReader">DataReader对象</param> ???????????/// <returns>Json字符串</returns> ???????????public static string ToJson(DbDataReader dataReader) ???????{ ???????????StringBuilder jsonString = new StringBuilder(); ???????????jsonString.Append("["); ???????????while (dataReader.Read()) ???????????{ ???????????????jsonString.Append("{"); ???????????????for (int i = 0; i < dataReader.FieldCount; i++) ???????????????{ ???????????????????Type type = dataReader.GetFieldType(i); ???????????????????string strKey = dataReader.GetName(i); ???????????????????string strValue = dataReader[i].ToString(); ???????????????????jsonString.Append("\"" + strKey + "\":"); ???????????????????strValue = StringFormat(strValue, type); ???????????????????if (i < dataReader.FieldCount - 1) ???????????????????{ ???????????????????????jsonString.Append(strValue + ","); ???????????????????} ???????????????????else ???????????????????{ ???????????????????????jsonString.Append(strValue); ???????????????????} ???????????????} ???????????????jsonString.Append("},"); ???????????} ???????????dataReader.Close(); ???????????jsonString.Remove(jsonString.Length - 1, 1); ???????????jsonString.Append("]"); ???????????return jsonString.ToString(); ???????} ???????/// <summary> ???????/// 将IList转成JSON ???????/// </summary> ???????/// <typeparam name="T"></typeparam> ???????/// <param name="jsonName"></param> ???????/// <param name="IL"></param> ???????/// <returns></returns> ???????public static string ObjectToJson<T>(IList<T> IL) ???????{ ???????????StringBuilder Json = new StringBuilder(); ???????????Json.Append("["); ???????????if (IL.Count > 0) ???????????{ ???????????????for (int i = 0; i < IL.Count; i++) ???????????????{ ???????????????????T obj = Activator.CreateInstance<T>(); ???????????????????Type type = obj.GetType(); ???????????????????PropertyInfo[] pis = type.GetProperties(); ???????????????????Json.Append("{"); ???????????????????for (int j = 0; j < pis.Length; j++) ???????????????????{ ???????????????????????Json.Append("\"" + pis[j].Name.ToString() + "\":\"" + pis[j].GetValue(IL[i], null) + "\""); ???????????????????????if (j < pis.Length - 1) ???????????????????????{ ???????????????????????????Json.Append(","); ???????????????????????} ???????????????????} ???????????????????Json.Append("}"); ???????????????????if (i < IL.Count - 1) ???????????????????{ ???????????????????????Json.Append(","); ???????????????????} ???????????????} ???????????} ???????????Json.Append("]"); ???????????return Json.ToString(); ???????} ???????/// <summary> ???????/// 将IList转成符合FlexiGrid控件格式的JSON ???????/// </summary> ???????/// <typeparam name="T"></typeparam> ???????/// <param name="IL"></param> ???????/// <param name="page">但前页</param> ???????/// <param name="total">数据行数</param> ???????/// <returns></returns> ???????public static string ListToFlexiGridJson<T>(IList<T> IL, int page, int total) ???????{ ???????????StringBuilder Json = new StringBuilder(); ???????????Json.Append("{"); ???????????Json.Append("\"page\":" + page + ","); ???????????Json.Append("\"total\":" + total + ","); ???????????Json.Append("\"rows\":"); ???????????Json.Append("["); ???????????if (IL.Count > 0) ???????????{ ???????????????for (int i = 0; i < IL.Count; i++) ???????????????{ ???????????????????T obj = Activator.CreateInstance<T>(); ???????????????????Type type = obj.GetType(); ???????????????????PropertyInfo[] pis = type.GetProperties(); ???????????????????Json.Append("{"); ???????????????????for (int j = 0; j < pis.Length; j++) ???????????????????{ ???????????????????????Json.Append("\"" + pis[j].Name.ToString() + "\":\"" + pis[j].GetValue(IL[i], null) + "\""); ???????????????????????if (j < pis.Length - 1) ???????????????????????{ ???????????????????????????Json.Append(","); ???????????????????????} ???????????????????} ???????????????????Json.Append("}"); ???????????????????if (i < IL.Count - 1) ???????????????????{ ???????????????????????Json.Append(","); ???????????????????} ???????????????} ???????????} ???????????Json.Append("]"); ???????????Json.Append("}"); ???????????return Json.ToString(); ???????} ???????/// <summary> ???????????/// DataSet转换为Json ???????????/// </summary> ???????????/// <param name="dataSet">DataSet对象</param> ???????????/// <returns>Json字符串</returns> ???????????public static string ToJson(DataSet dataSet) ???????{ ???????????string jsonString = "{"; ???????????foreach (DataTable table in dataSet.Tables) ???????????{ ???????????????jsonString += "\"" + table.TableName + "\":" + ToJson(table) + ","; ???????????} ???????????jsonString = jsonString.TrimEnd(‘,‘); ???????????return jsonString + "}"; ???????} ???????/// <summary> ??????????/// 过滤特殊字符 ??????????/// </summary> ??????????/// <param name="s"></param> ??????????/// <returns></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(); ???????} ???????/// <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(); ???????????} ???????????return str; ???????} ???}}
JSON格式互转集合
原文地址:http://www.cnblogs.com/zzp0320/p/7909476.html