国产探花免费观看_亚洲丰满少妇自慰呻吟_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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁陕县| 平山县| 澄江县| 东安县| 鱼台县| 加查县| 石棉县| 贺州市| 新和县| 象州县| 克山县| 巴南区| 漾濞| 安图县| 南城县| 遂宁市| 九龙坡区| 涟源市| 额尔古纳市| 永宁县| 白玉县| 临漳县| 周口市| 吉林省| 神木县| 常德市| 安岳县| 贵州省| 眉山市| 镇远县| 英德市| 崇文区| 广灵县| 时尚| 三都| 西乡县| 达州市| 建水县| 壶关县| 奉新县| 綦江县|