jsonHelper

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI.WebControls; using System.Text; using System.Data; using System.Collections; using System.Reflection; using System.Text.RegularExpressions; using System.Web.UI.HtmlControls; using System.Web.Script.Serialization;   using CMDS.ORMappers; using System.IO;   namespace CMDS.Common {     /// <summary>     /// Json处理类 Devil20120412     /// </summary>     public static class JsonHelper     {        public static JavaScriptSerializer Serializer = new JavaScriptSerializer();           /// <summary>         /// List转化为Json         /// </summary>         /// <param name="obj"></param>         /// <returns></returns>         public static string ListToJson(object obj)         {             return Serializer.Serialize(obj);         }               /// <summary>         /// Json转换为List         /// </summary>         /// <param name="list"></param>         /// <param name="jsons"></param>         /// <returns></returns>         public static List<T> JsonToList<T>(string jsons)         {             return Serializer.Deserialize<List<T>>(jsons);         }           /// <summary>         /// Json转换为Mode实体         /// </summary>         /// <param name="jsons"></param>         /// <returns></returns>         public static T JsonToModel<T>(string jsons)         {             return Serializer.Deserialize<T>(jsons);           }           ///// <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;         //                object o = pi[j].GetValue(list[i], null);         //                string v = string.Empty;         //                if (o != null)         //                {         //                    type = o.GetType();         //                    v = o.ToString();         //                }         //                else         //                {         //                    type = typeof(string);         //                }           //                Json.Append("\"" + pi[j].Name.ToString() + "\":" + StringFormat(v, type));           //                if (j < pi.Length - 1)         //                {         //                    Json.Append(",");         //                }         //            }         //            Json.Append("}");         //            if (i < list.Count - 1)         //            {         //                Json.Append(",");         //            }         //        }         //    }         //    Json.Append("]}");         //    return Json.ToString();         //}           /// <summary>          /// 将Json序列化的时间由/Date(1294499956278+0800)转为字符串          /// </summary>          private static string ConvertJsonDateToDateString(Match m)         {             string result = string.Empty;             DateTime dt = new DateTime(1970, 1, 1);             dt = dt.AddMilliseconds(long.Parse(m.Groups[1].Value));             dt = dt.ToLocalTime();             result = dt.ToString("yyyy-MM-dd HH:mm:ss");             return result;         }           /// <summary>           /// 将时间字符串转为Json时间          /// </summary>          private static string ConvertDateStringToJsonDate(Match m)         {             string result = string.Empty;             DateTime dt = DateTime.Parse(m.Groups[0].Value);             dt = dt.ToUniversalTime();             TimeSpan ts = dt - DateTime.Parse("1970-01-01");             result = string.Format("\\/Date({0}+0800)\\/", ts.TotalMilliseconds);             return result;         }           ///// <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)         {             try             {                 StringBuilder jsonString = new StringBuilder();                 jsonString.Append("{");                 PropertyInfo[] propertyInfo = jsonObject.GetType().GetProperties();                 for (int i = 0; i < propertyInfo.Length; i++)                 {                     object objectValue = propertyInfo[i].GetGetMethod().Invoke(jsonObject, null);                     if (objectValue == null)                     {                         continue;                     }                     StringBuilder value = new StringBuilder();                     if (objectValue is DateTime || objectValue is Guid || objectValue is TimeSpan)                     {                         value.Append("\"" + objectValue.ToString() + "\"");                     }                     else if (objectValue is string)                     {                         value.Append("\"" + objectValue.ToString() + "\"");                     }                     else if (objectValue is IEnumerable)                     {                         value.Append(ToJson((IEnumerable)objectValue));                     }                     else                     {                         value.Append("\"" + objectValue.ToString() + "\"");                     }                     jsonString.Append("\"" + propertyInfo[i].Name + "\":" + value + ","); ;                 }                 return jsonString.ToString().TrimEnd(',') + "}";             }             catch (Exception ex)             {                 throw ex;             }         }           /// <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) + ",";             }             if (jsonString.Length > 1)             {                 // jsonString.Remove(jsonString.Length - 1, 1);                 jsonString = jsonString.TrimEnd(',');             }             else             {                 jsonString = "[]";             }             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("]");             if (jsonString.Length == 1)             {                 return "[]";             }             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] is DBNull ? string.Empty : 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(IDataReader dataReader)         {             try             {                 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("},");                 }                 if (!dataReader.IsClosed)                 {                     dataReader.Close();                 }                 jsonString.Remove(jsonString.Length - 1, 1);                 jsonString.Append("]");                 if (jsonString.Length == 1)                 {                     return "[]";                 }                 return jsonString.ToString();             }             catch (Exception ex)             {                 throw ex;             }         }           /// <summary>          /// DataSet转换为Json          /// </summary>          /// <param name="dataSet">DataSet对象</param>          /// <returns>Json字符串</returns>          public static string ToJson(DataSet dataSet)         {             return ToJson(dataSet, false);             //foreach (DataTable table in dataSet.Tables)             // {             //   jsonString +=ToJson(table) + ",";             // }             // jsonString = jsonString.TrimEnd(',');             // return jsonString + "}";         }         /// <summary>          /// DataSet转换为Json          /// </summary>          /// <param name="dataSet">DataSet对象</param>          /// <returns>Json字符串</returns>          public static string ToJson(DataSet dataSet, bool isTableName)         {             string jsonString = "{";             foreach (DataTable table in dataSet.Tables)             {                 if (isTableName)                 {                     jsonString += "\"" + table.TableName + "\":" + ToJson(table) + ",";                 }                 else                 {                     jsonString += ToJson(table) + ",";                 }               }             jsonString = jsonString.TrimEnd(',');             return jsonString + "}";         }           /// <summary>         /// 过滤特殊字符         /// </summary>         /// <param name="s"></param>         /// <returns></returns>         public 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;                     case '\v':                         sb.Append("\\v"); break;                     case '\0':                         sb.Append("\\0"); 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) && string.IsNullOrEmpty(str))             {                 str = "\"" + str + "\"";             }             else 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(byte[]))             {                 str = "\"" + str + "\"";             }             else if (type == typeof(Guid))             {                 str = "\"" + str + "\"";             }             return str;         }             public static void RegistAjax(HtmlHead Header, Type type)         {             string assemblyName = type.FullName + "," + type.Assembly.FullName.Substring(0, type.Assembly.FullName.IndexOf(","));             if (type.Assembly.FullName.StartsWith("App_Code."))             {                 assemblyName = type.FullName + ",App_Code";             }             Literal l = new Literal();             l.Text = "\n<script type=\"text/javascript\" src=\"/ajaxpro/prototype.ashx\"></script>\n"             + "<script type=\"text/javascript\" src=\"/ajaxpro/core.ashx\"></script>\n"             + "<script type=\"text/javascript\" src=\"/ajaxpro/converter.ashx\"></script>\n"             + "<script type=\"text/javascript\" src=\"/ajaxpro/" + assemblyName + ".ashx\"></script>\n";             Header.Controls.Add(l);         }     } }


你可能感兴趣的:(jsonHelper)