/* 作者: 季健国 * 创建时间: 2012/6/9 23:10:11 * */ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web.Script.Serialization; using Newtonsoft.Json; using System.Xml; using System.Runtime.Serialization.Json; using System.IO; using System.Data; using System.Collections; namespace Ant.Service.Common { /// /// 提供了一个关于json的辅助类 /// public class JsonHelper { #region DataTable<-->JSON /// /// DataTable转为json /// /// DataTable /// json数据 public static string DataTableToJson(DataTable dt) { List> list = new List>(); foreach (DataRow dr in dt.Rows) { Dictionary result = new Dictionary(); foreach (DataColumn dc in dt.Columns) { result.Add(dc.ColumnName, dr[dc]); } list.Add(result); } return SerializeToJson(list); } /// /// 序列化对象为Json字符串 /// /// 要序列化的对象 /// 序列化对象的深度,默认为100 /// Json字符串 public static string SerializeToJson(object obj, int recursionLimit = 100) { try { JavaScriptSerializer serialize = new JavaScriptSerializer(); serialize.RecursionLimit = recursionLimit; return serialize.Serialize(obj); } catch { return ""; } } /// /// json包转DataTable /// /// /// public static DataTable JsonToDataTable(string jsons) { DataTable dt = new DataTable(); try { JavaScriptSerializer serialize = new JavaScriptSerializer(); serialize.MaxJsonLength = Int32.MaxValue; ArrayList list = serialize.Deserialize(jsons); if (list.Count > 0) { foreach (Dictionary item in list) { if (item.Keys.Count == 0)//无值返回空 { return dt; } if (dt.Columns.Count == 0)//初始Columns { foreach (string current in item.Keys) { dt.Columns.Add(current, item[current].GetType()); } } DataRow dr = dt.NewRow(); foreach (string current in item.Keys) { dr[current] = item[current]; } dt.Rows.Add(dr); } } } catch { return dt; } return dt; } #endregion #region Method /// /// 类对像转换成json格式 /// /// public static string ToJson(object t) { return JsonConvert.SerializeObject(t, Newtonsoft.Json.Formatting.Indented, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Include }); } /// /// 类对像转换成json格式 /// /// /// 是否忽略NULL值 /// public static string ToJson(object t, bool HasNullIgnore) { if (HasNullIgnore) return JsonConvert.SerializeObject(t, Newtonsoft.Json.Formatting.Indented, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); else return ToJson(t); } /// /// json格式转换 /// /// /// /// public static T FromJson(string strJson) where T : class { if (!strJson.IsNullOrEmpty()) return JsonConvert.DeserializeObject(strJson); return null; } /// /// 功能描述:将List转换为Json /// 创建标识:szj /// /// /// public static string ListToJson(IList a) { DataContractJsonSerializer json = new DataContractJsonSerializer(a.GetType()); string szJson = ""; //序列化 using (MemoryStream stream = new MemoryStream()) { json.WriteObject(stream, a); szJson = Encoding.UTF8.GetString(stream.ToArray()); } return szJson; } #endregion #region Property /// /// 数据状态 /// public string Status { get; set; } /// /// 提示信息 /// public string Msg { get; set; } /// /// 回传URL /// public string ReUrl { get; set; } /// /// 数据包 /// public object Data { get; set; } #endregion } }