麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

JSON擴(kuò)展類——JsonHelper

2019-11-17 02:31:15
字體:
供稿:網(wǎng)友

JSON擴(kuò)展類——JsonHelper

1.引用Newtonsoft.Json庫(kù)(JSON.NET)。

2.復(fù)制粘貼JsonHelper吧。

源代碼:

using System;using System.Collections.Generic;using System.Linq;using Newtonsoft.Json;using Newtonsoft.Json.Converters;namespace Allen.Core{    public static partial class JsonHelper    {        #region PRivate fields        private static readonly JsonSerializerSettings JsonSettings;        private const string EmptyJson = "[]";        #endregion        #region Constructor        static JsonHelper()        {            var datetimeConverter = new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" };            JsonSettings = new JsonSerializerSettings            {                MissingMemberHandling = MissingMemberHandling.Ignore,                NullValueHandling = NullValueHandling.Ignore,                ReferenceLoopHandling = ReferenceLoopHandling.Ignore            };            JsonSettings.Converters.Add(datetimeConverter);        }        #endregion        #region Public Methods        /// <summary>        /// 應(yīng)用Formatting.None和指定的JsonSerializerSettings設(shè)置,序列化對(duì)象到JSON格式的字符串        /// </summary>        /// <param name="obj">任意一個(gè)對(duì)象</param>        /// <param name="jsonSettings">在一個(gè) Newtonsoft.Json.JsonSerializer 對(duì)象上指定設(shè)置,如果為null,則使用默認(rèn)設(shè)置</param>        /// <returns>標(biāo)準(zhǔn)的JSON格式的字符串</returns>        public static string ToJson(object obj, JsonSerializerSettings jsonSettings)        {            return ToJson(obj, Formatting.None, jsonSettings);        }        /// <summary>        /// 應(yīng)用指定的Formatting枚舉值None和指定的JsonSerializerSettings設(shè)置,序列化對(duì)象到JSON格式的字符串        /// </summary>        /// <param name="obj">任意一個(gè)對(duì)象</param>        /// <param name="format">指定 Newtonsoft.Json.JsonTextWriter 的格式設(shè)置選項(xiàng)</param>        /// <param name="jsonSettings">在一個(gè) Newtonsoft.Json.JsonSerializer 對(duì)象上指定設(shè)置,如果為null,則使用默認(rèn)設(shè)置</param>        /// <returns>標(biāo)準(zhǔn)的JSON格式的字符串</returns>        public static string ToJson(object obj, Formatting format, JsonSerializerSettings jsonSettings)        {            try            {                return obj == null ? EmptyJson : JsonConvert.SerializeObject(obj, format, jsonSettings ?? JsonSettings);            }            catch (Exception)            {                //TODO LOG                return EmptyJson;            }        }        /// <summary>        /// 應(yīng)用Formatting.None和指定的JsonSerializerSettings設(shè)置,反序列化JSON數(shù)據(jù)為dynamic對(duì)象        /// <para>如果發(fā)生JsonSerializationException異常,再以集合的方式重試一次,取出集合的第一個(gè)dynamic對(duì)象。</para>        /// <para>轉(zhuǎn)換失敗,或發(fā)生其它異常,則返回dynamic對(duì)象的默認(rèn)值</para>        /// </summary>        /// <param name="json">需要反序列化的JSON字符串</param>        /// <param name="jsonSettings">在一個(gè) Newtonsoft.Json.JsonSerializer 對(duì)象上指定設(shè)置,如果為null,則使用默認(rèn)設(shè)置</param>        /// <returns>dynamic對(duì)象</returns>        public static dynamic FromJson(this string json, JsonSerializerSettings jsonSettings)        {            return FromJson<dynamic>(json, Formatting.None, jsonSettings);        }        /// <summary>        /// 應(yīng)用指定的Formatting枚舉值None和指定的JsonSerializerSettings設(shè)置,反序列化JSON數(shù)據(jù)為dynamic對(duì)象        /// <para>如果發(fā)生JsonSerializationException異常,再以集合的方式重試一次,取出集合的第一個(gè)dynamic對(duì)象。</para>        /// <para>轉(zhuǎn)換失敗,或發(fā)生其它異常,則返回dynamic對(duì)象的默認(rèn)值</para>        /// </summary>        /// <param name="json">需要反序列化的JSON字符串</param>        /// <param name="format">指定 Newtonsoft.Json.JsonTextWriter 的格式設(shè)置選項(xiàng)</param>        /// <param name="jsonSettings">在一個(gè) Newtonsoft.Json.JsonSerializer 對(duì)象上指定設(shè)置,如果為null,則使用默認(rèn)設(shè)置</param>        /// <returns>dynamic對(duì)象</returns>        public static dynamic FromJson(this string json, Formatting format, JsonSerializerSettings jsonSettings)        {            return FromJson<dynamic>(json, format, jsonSettings);        }        /// <summary>        /// 應(yīng)用Formatting.None和指定的JsonSerializerSettings設(shè)置,反序列化JSON數(shù)據(jù)到指定的.NET類型對(duì)象        /// <para>如果發(fā)生JsonSerializationException異常,再以集合的方式重試一次,取出集合的第一個(gè)T對(duì)象。</para>        /// <para>轉(zhuǎn)換失敗,或發(fā)生其它異常,則返回T對(duì)象的默認(rèn)值</para>        /// </summary>        /// <param name="json">需要反序列化的JSON字符串</param>        /// <param name="jsonSettings">在一個(gè) Newtonsoft.Json.JsonSerializer 對(duì)象上指定設(shè)置,如果為null,則使用默認(rèn)設(shè)置</param>        /// <typeparam name="T">反序列化對(duì)象的類型</typeparam>        /// <returns></returns>        public static T FromJson<T>(string json, JsonSerializerSettings jsonSettings) where T : class, new()        {            return FromJson<T>(json, Formatting.None, jsonSettings);        }        /// <summary>        /// 應(yīng)用指定的Formatting枚舉值None和指定的JsonSerializerSettings設(shè)置,反序列化JSON數(shù)據(jù)到指定的.NET類型對(duì)象        /// <para>如果發(fā)生JsonSerializationException異常,再以集合的方式重試一次,取出集合的第一個(gè)T對(duì)象。</para>        /// <para>轉(zhuǎn)換失敗,或發(fā)生其它異常,則返回T對(duì)象的默認(rèn)值</para>        /// </summary>        /// <param name="json">需要反序列化的JSON字符串</param>        /// <param name="format">指定 Newtonsoft.Json.JsonTextWriter 的格式設(shè)置選項(xiàng)</param>        /// <param name="jsonSettings">在一個(gè) Newtonsoft.Json.JsonSerializer 對(duì)象上指定設(shè)置,如果為null,則使用默認(rèn)設(shè)置</param>        /// <typeparam name="T">反序列化對(duì)象的類型</typeparam>        /// <returns></returns>        public static T FromJson<T>(string json, Formatting format, JsonSerializerSettings jsonSettings) where T : class, new()        {            T result;            if (jsonSettings == null)            {                jsonSettings = JsonSettings;            }            try            {                result = string.IsNullOrWhiteSpace(json) ? default(T) : JsonConvert.DeserializeObject<T>(json, jsonSettings);            }            catch (JsonSerializationException) //在發(fā)生該異常后,再以集合的方式重試一次.            {                //LOG                try                {                    var array = JsonConvert.DeserializeObject<IEnumerable<T>>(json, jsonSettings);                    result = array.FirstOrDefault();                }                catch (Exception)                {                    //LOG                    result = default(T);                }            }            catch (Exception)            {                //LOG                result = default(T);            }            return result;        }        #endregion        #region Public Extend Methods        /// <summary>        /// 反序列化JSON數(shù)據(jù)為dynamic對(duì)象        /// <para>如果發(fā)生JsonSerializationException異常,再以集合的方式重試一次,取出集合的第一個(gè)dynamic對(duì)象。</para>        /// <para>轉(zhuǎn)換失敗,或發(fā)生其它異常,則返回dynamic對(duì)象的默認(rèn)值</para>        /// </summary>        /// <param name="json">需要反序列化的JSON字符串</param>        /// <returns>dynamic對(duì)象</returns>        public static dynamic FromJson(this string json)        {            return FromJson<dynamic>(json, Formatting.None, JsonSettings);        }        /// <summary>        /// 反序列化JSON數(shù)據(jù)到指定的.NET類型對(duì)象        /// <para>如果發(fā)生JsonSerializationException異常,再以集合的方式重試一次,取出集合的第一個(gè)T對(duì)象。</para>        /// <para>轉(zhuǎn)換失敗,或發(fā)生其它異常,則返回T對(duì)象的默認(rèn)值</para>        /// </summary>        /// <param name="json">需要反序列化的JSON字符串</param>        /// <typeparam name="T">反序列化對(duì)象的類型</typeparam>        /// <returns></returns>        public static T FromJson<T>(this string json) where T : class, new()        {            return FromJson<T>(json, Formatting.None, JsonSettings);        }        /// <summary>        /// 應(yīng)用默認(rèn)的Formatting枚舉值None和默認(rèn)的JsonSerializerSettings設(shè)置,序列化對(duì)象到JSON格式的字符串        /// </summary>        /// <param name="obj">任意一個(gè)對(duì)象</param>        /// <returns>標(biāo)準(zhǔn)的JSON格式的字符串</returns>        public static string ToJson(this object obj)        {            return ToJson(obj, Formatting.None, JsonSettings);        }        public static string ToJson<TSource>(this IEnumerable<TSource> source, F
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产男女 爽爽爽爽视频 | 成人免费网站在线观看视频 | 一边吃奶一边摸下娇喘 | 黄色香蕉视频 | 91成人影院 | 成人午夜在线免费观看 | 久久99亚洲精品久久99果 | 亚洲午夜一区二区三区 | 欧美一级黄色免费 | 国产毛片毛片毛片 | 九一传媒在线观看 | 日韩视频一区二区三区在线观看 | 91美女视频在线 | 嫩草91在线| 久久久久久久久久久久久久av | 91在线色 | 精品三级内地国产在线观看 | 万圣街在线观看免费完整版 | 91看片淫黄大片欧美看国产片 | 国产精品自拍片 | 本站只有精品 | 九九精品在线观看视频 | xxnxx中国18 | 日本黄色一级视频 | 91在线色| 亚洲欧洲日韩av | 中文字幕视频在线播放 | 久久精品亚洲欧美日韩精品中文字幕 | 欧美一级做性受免费大片免费 | 好吊一区二区三区 | 亚洲码无人客一区二区三区 | 欧美 国产 亚洲 卡通 综合 | 亚洲成人高清电影 | 国产精品av久久久久久无 | 国产福利视频在线观看 | 免费观看亚洲视频 | 欧美一级毛片大片免费播放 | 国产精品夜色视频一级区 | 91美女啪啪| 91精品国产91久久久 | 中日韩乱码一二新区 |