using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Reflection; using System.Text; namespace Common { public class JsonHelper { public static string IListToJson(IList list) { StringBuilder sb = new StringBuilder(); sb.Append("["); foreach (T t in list) { sb.Append(JsonHelper.ObjectToJson(t) + ","); } string _temp = sb.ToString().TrimEnd(new char[] { ',' }); return _temp + "]"; } public static string IListToJson(IList list, string ClassName) { StringBuilder sb = new StringBuilder(); sb.Append("{\"" + ClassName + "\":["); foreach (T t in list) { sb.Append(JsonHelper.ObjectToJson(t) + ","); } string _temp = sb.ToString().TrimEnd(new char[] { ',' }); return _temp + "]}"; } public static string ObjectToJson(T t) { StringBuilder sb = new StringBuilder(); string json = ""; if (t != null) { sb.Append("{"); PropertyInfo[] properties = t.GetType().GetProperties(); PropertyInfo[] array = properties; for (int i = 0; i < array.Length; i++) { PropertyInfo pi = array[i]; sb.Append("\"" + pi.Name.ToString() + "\""); sb.Append(":"); sb.Append($"\"{pi.GetValue(t, null)}\""); sb.Append(","); } json = sb.ToString().TrimEnd(new char[] { ',' }); json += "}"; } return json; } public static string ObjectToJson(T t, string ClassName) { StringBuilder sb = new StringBuilder(); sb.Append("{\"" + ClassName + "\":["); string json = ""; if (t != null) { sb.Append("{"); PropertyInfo[] properties = t.GetType().GetProperties(); PropertyInfo[] array = properties; for (int i = 0; i < array.Length; i++) { PropertyInfo pi = array[i]; sb.Append("\"" + pi.Name.ToString() + "\""); sb.Append(":"); sb.Append("\"" + pi.GetValue(t, null) + "\""); sb.Append(","); } json = sb.ToString().TrimEnd(new char[] { ',' }); json += "}]}"; } return json; } public static string ObjectToJson(IList IL, string jsonName) { StringBuilder Json = new StringBuilder(); Json.Append("{\"" + jsonName + "\":["); if (IL.Count > 0) { for (int i = 0; i < IL.Count; i++) { T obj = Activator.CreateInstance(); Type type = obj.GetType(); PropertyInfo[] pis = type.GetProperties(); Json.Append("{"); for (int j = 0; j < pis.Length; j++) { Json.Append(string.Concat(new object[] { "\"", 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(); } public static string ArrayToJson(List list, string propertyname) { StringBuilder sb = new StringBuilder(); string result; if (list.Count > 0) { sb.Append("[{\""); sb.Append(propertyname); sb.Append("\":["); foreach (T t in list) { sb.Append("\""); sb.Append(t.ToString()); sb.Append("\","); } string _temp = sb.ToString(); _temp = _temp.TrimEnd(new char[] { ',' }); _temp += "]}]"; result = _temp; } else { result = ""; } return result; } public static string DataTableToJson(DataTable dt, string dtName) { StringBuilder sb = new StringBuilder(); sb.Append("{\""); sb.Append(dtName); sb.Append("\":["); if (DataTableHelper.IsExistRows(dt)) { foreach (DataRow dr in dt.Rows) { sb.Append("{"); foreach (DataColumn dc in dr.Table.Columns) { sb.Append("\""); sb.Append(dc.ColumnName); sb.Append("\":\""); if (dr[dc] != null && dr[dc] != DBNull.Value && dr[dc].ToString() != "") { sb.Append(dr[dc]).Replace("\\", "/"); } else { sb.Append(" "); } sb.Append("\","); } sb = sb.Remove(sb.Length - 1, 1); sb.Append("},"); } sb = sb.Remove(sb.Length - 1, 1); } sb.Append("]}"); return JsonHelper.JsonCharFilter(sb.ToString()); } public static string DataTableToJson(DataTable dt) { StringBuilder sb = new StringBuilder(); if (DataTableHelper.IsExistRows(dt)) { sb.Append("["); foreach (DataRow dr in dt.Rows) { sb.Append("{"); foreach (DataColumn dc in dr.Table.Columns) { sb.Append("\'"); sb.Append(dc.ColumnName); sb.Append("\':\'"); if (dr[dc] != null && dr[dc] != DBNull.Value && dr[dc].ToString() != "") { sb.Append(dr[dc]).Replace("\\", "/"); } else { sb.Append(""); } sb.Append("\',"); } sb = sb.Remove(sb.Length - 1, 1); sb.Append("},"); } sb = sb.Remove(sb.Length - 1, 1); sb.Append("]"); } return JsonHelper.JsonCharFilter(sb.ToString()); } public static string DataTableToSchartItems(DataTable dt) { StringBuilder sb = new StringBuilder(); if (DataTableHelper.IsExistRows(dt)) { sb.Append("["); foreach (DataRow dr in dt.Rows) { sb.Append("{"); sb.Append("value:" + dr["rowNum"].ToString()); switch (dr["TurnoverDemand"].ToString()) { case "1": sb.Append(", name:'¿Õ¿âλ"+ dr["rowNum"].ToString() + "'"); break; case "2": sb.Append(", name:'ºÏ¸ñ" + dr["rowNum"].ToString() + "'"); break; case "3": sb.Append(", name:'´ýÈë¿â" + dr["rowNum"].ToString() + "'"); break; case "4": sb.Append(", name:'´ý³ö¿â" + dr["rowNum"].ToString() + "'"); break; } sb.Append("},"); } sb = sb.Remove(sb.Length - 1, 1); sb.Append("]"); } return JsonHelper.JsonCharFilter(sb.ToString()); } public static string DataTableToArrayJson(DataTable dt) { StringBuilder sb = new StringBuilder(); if (DataTableHelper.IsExistRows(dt)) { sb.Append("["); foreach (DataRow dr in dt.Rows) { sb.Append("["); sb.Append(dr["LColumn"].ToString() + ","); sb.Append(dr["LLayer"].ToString() + ","); sb.Append(dr["TurnoverDemand"].ToString()); sb.Append("],"); } sb = sb.Remove(sb.Length - 1, 1); sb.Append("]"); } return JsonHelper.JsonCharFilter(sb.ToString()); } public static string DataRowToJson(DataRow dr) { StringBuilder sb = new StringBuilder(); sb.Append("{"); foreach (DataColumn dc in dr.Table.Columns) { sb.Append("\""); sb.Append(dc.ColumnName); sb.Append("\":\""); if (dr[dc] != null && dr[dc] != DBNull.Value && dr[dc].ToString() != "") { sb.Append(dr[dc]); } else { sb.Append(" "); } sb.Append("\","); } sb = sb.Remove(0, sb.Length - 1); sb.Append("},"); return sb.ToString(); } public static string ArrayToJson(string[] strs) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < strs.Length; i++) { sb.AppendFormat("'{0}':'{1}',", i + 1, strs[i]); } string result; if (sb.Length > 0) { result = "{" + sb.ToString().TrimEnd(new char[] { ',' }) + "}"; } else { result = ""; } return result; } public static string ListToJson(List objlist, string jsonName) { string result = "{"; if (jsonName.Equals(string.Empty)) { object o = objlist[0]; jsonName = o.GetType().ToString(); } result = result + "\"" + jsonName + "\":["; bool firstline = true; foreach (object oo in objlist) { if (!firstline) { result = result + "," + JsonHelper.ObjectToJson(oo); } else { result += JsonHelper.ObjectToJson(oo); firstline = false; } } return result + "]}"; } private static string ObjectToJson(object o) { string result = "{"; List ls_propertys = new List(); ls_propertys = JsonHelper.GetObjectProperty(o); foreach (string str_property in ls_propertys) { if (result.Equals("{")) { result += str_property; } else { result = result + "," + str_property; } } return result + "}"; } private static List GetObjectProperty(object o) { List propertyslist = new List(); PropertyInfo[] propertys = o.GetType().GetProperties(); PropertyInfo[] array = propertys; for (int i = 0; i < array.Length; i++) { PropertyInfo p = array[i]; propertyslist.Add(string.Concat(new object[] { "\"", p.Name.ToString(), "\":\"", p.GetValue(o, null), "\"" })); } return propertyslist; } public static string HashtableToJson(Hashtable data, string dtName) { StringBuilder sb = new StringBuilder(); sb.Append("{\""); sb.Append(dtName); sb.Append("\":[{"); foreach (object key in data.Keys) { object value = data[key]; sb.Append("\""); sb.Append(key); sb.Append("\":\""); if (!string.IsNullOrEmpty(value.ToString()) && value != DBNull.Value) { sb.Append(value).Replace("\\", "/"); } else { sb.Append(" "); } sb.Append("\","); } sb = sb.Remove(sb.Length - 1, 1); sb.Append("}]}"); return JsonHelper.JsonCharFilter(sb.ToString()); } private static string JsonCharFilter(string sourceStr) { return sourceStr; } } }