国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

利用Newtonsoft.Json實現Json序列化與反序列化

2019-11-17 02:13:35
字體:
來源:轉載
供稿:網友

利用Newtonsoft.Json實現Json序列化與反序列化

在項目中用到了Newtonsoft.Json來實現序列化和反序列化,在這里寫下實現代碼。

1、創建類用于排除不序列化的屬性

public class ExcludePRopertiesContractResolver : DefaultContractResolver    {        IEnumerable<string> lstExclude;        public ExcludePropertiesContractResolver(IEnumerable<string> excludedProperties)        {            lstExclude = excludedProperties;        }        protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)        {            return base.CreateProperties(type, memberSerialization).ToList().FindAll(p => !lstExclude.Contains(p.PropertyName));        }    }

2、序列化方法

以下分別是將對象、DataTable、集合序列化為Json字符串的方法:

        /// <summary>        /// T對象轉換成json字符串        /// </summary>        /// <typeparam name="T"></typeparam>        /// <param name="obj"></param>        /// <returns></returns>        public static string GetJsonString<T>(T obj, params string[] ignoreFields)        {            IsoDateTimeConverter iso = new IsoDateTimeConverter();            iso.DateTimeFormat = "yyyy-MM-ddTHH:mm:ss";            iso.DateTimeStyles = System.Globalization.DateTimeStyles.AssumeLocal;            string jsonStr = string.Empty;            JsonSerializerSettings js = new JsonSerializerSettings();            if (ignoreFields != null && ignoreFields.Length > 0)            {                List<string> ignoreList = ignoreFields.ToList();                js.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;                js.ContractResolver = new ExcludePropertiesContractResolver(ignoreList);            }            js.Converters.Add(iso);            jsonStr = JsonConvert.SerializeObject(obj, Formatting.Indented, js);            return jsonStr;        }        /// <summary>        /// DataTable對象轉換成json字符串        /// </summary>        /// <param name="dt"></param>        /// <returns></returns>        public static string GetJsonString(DataTable dt, params string[] ignoreFields)        {            IsoDateTimeConverter iso = new IsoDateTimeConverter();            iso.DateTimeFormat = "yyyy-MM-ddTHH:mm:ss";            iso.DateTimeStyles = System.Globalization.DateTimeStyles.AssumeLocal;            string jsonStr = string.Empty;            JsonSerializerSettings js = new JsonSerializerSettings();            if (ignoreFields != null && ignoreFields.Length > 0)            {                List<string> ignoreList = ignoreFields.ToList();                js.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;                js.ContractResolver = new ExcludePropertiesContractResolver(ignoreList);            }            js.Converters.Add(new DataTableConverter());            js.Converters.Add(iso);            jsonStr = JsonConvert.SerializeObject(dt, Formatting.Indented,js);            return jsonStr;        }        /// <summary>        /// List對象轉換成json字符串        /// </summary>        /// <param name="dt"></param>        /// <returns></returns>        public static string GetJsonString<T>(List<T> list, params string[] ignoreFields)        {            IsoDateTimeConverter iso = new IsoDateTimeConverter();            iso.DateTimeFormat = "yyyy-MM-ddTHH:mm:ss";            iso.DateTimeStyles = System.Globalization.DateTimeStyles.AssumeLocal;            string jsonStr = string.Empty;            JsonSerializerSettings js = new JsonSerializerSettings();            if (ignoreFields != null && ignoreFields.Length > 0)            {                List<string> ignoreList = ignoreFields.ToList();                js.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;                js.ContractResolver = new ExcludePropertiesContractResolver(ignoreList);            }            js.Converters.Add(iso);            jsonStr = JsonConvert.SerializeObject(list, Formatting.Indented, js);            return jsonStr;        }
View Code

3、反序列化

以下是將Json字符串反序列化為對象、集合的方法。

        /// <summary>        /// json字符串轉換成T對象        /// </summary>        /// <typeparam name="T"></typeparam>        /// <param name="jsonStr"></param>        /// <returns></returns>        public static T GetObjectByJsonString<T>(string jsonStr)        {            T obj = JsonConvert.DeserializeObject<T>(jsonStr);            return obj;        }        /// <summary>        /// json字符串轉換成List對象        /// </summary>        /// <typeparam name="T"></typeparam>        /// <param name="jsonStr"></param>        /// <returns></returns>        public static List<T> GetListByJsonString<T>(string jsonStr)        {            List<T> list = JsonConvert.DeserializeObject<List<T>>(jsonStr);            return list;        }
View Code


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 虹口区| 常山县| 开封市| 河北区| 昌吉市| 云霄县| 凤翔县| 广丰县| 海林市| 仙游县| 新民市| 安化县| 舞钢市| 石嘴山市| 大洼县| 岐山县| 剑河县| 江川县| 潞西市| 贞丰县| 财经| 锦屏县| 枣强县| 淮滨县| 红桥区| 土默特右旗| 文化| 苍梧县| 宣武区| 响水县| 仁化县| 资兴市| 集安市| 天祝| 乌鲁木齐市| 土默特左旗| 金沙县| 宁武县| 临沭县| 普定县| 绥江县|