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

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

JSON擴展類——JsonHelper

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

JSON擴展類——JsonHelper

1.引用Newtonsoft.Json庫(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è)置,序列化對象到JSON格式的字符串        /// </summary>        /// <param name="obj">任意一個對象</param>        /// <param name="jsonSettings">在一個 Newtonsoft.Json.JsonSerializer 對象上指定設(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è)置,序列化對象到JSON格式的字符串        /// </summary>        /// <param name="obj">任意一個對象</param>        /// <param name="format">指定 Newtonsoft.Json.JsonTextWriter 的格式設(shè)置選項</param>        /// <param name="jsonSettings">在一個 Newtonsoft.Json.JsonSerializer 對象上指定設(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對象        /// <para>如果發(fā)生JsonSerializationException異常,再以集合的方式重試一次,取出集合的第一個dynamic對象。</para>        /// <para>轉(zhuǎn)換失敗,或發(fā)生其它異常,則返回dynamic對象的默認(rèn)值</para>        /// </summary>        /// <param name="json">需要反序列化的JSON字符串</param>        /// <param name="jsonSettings">在一個 Newtonsoft.Json.JsonSerializer 對象上指定設(shè)置,如果為null,則使用默認(rèn)設(shè)置</param>        /// <returns>dynamic對象</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對象        /// <para>如果發(fā)生JsonSerializationException異常,再以集合的方式重試一次,取出集合的第一個dynamic對象。</para>        /// <para>轉(zhuǎn)換失敗,或發(fā)生其它異常,則返回dynamic對象的默認(rèn)值</para>        /// </summary>        /// <param name="json">需要反序列化的JSON字符串</param>        /// <param name="format">指定 Newtonsoft.Json.JsonTextWriter 的格式設(shè)置選項</param>        /// <param name="jsonSettings">在一個 Newtonsoft.Json.JsonSerializer 對象上指定設(shè)置,如果為null,則使用默認(rèn)設(shè)置</param>        /// <returns>dynamic對象</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類型對象        /// <para>如果發(fā)生JsonSerializationException異常,再以集合的方式重試一次,取出集合的第一個T對象。</para>        /// <para>轉(zhuǎn)換失敗,或發(fā)生其它異常,則返回T對象的默認(rèn)值</para>        /// </summary>        /// <param name="json">需要反序列化的JSON字符串</param>        /// <param name="jsonSettings">在一個 Newtonsoft.Json.JsonSerializer 對象上指定設(shè)置,如果為null,則使用默認(rèn)設(shè)置</param>        /// <typeparam name="T">反序列化對象的類型</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類型對象        /// <para>如果發(fā)生JsonSerializationException異常,再以集合的方式重試一次,取出集合的第一個T對象。</para>        /// <para>轉(zhuǎn)換失敗,或發(fā)生其它異常,則返回T對象的默認(rèn)值</para>        /// </summary>        /// <param name="json">需要反序列化的JSON字符串</param>        /// <param name="format">指定 Newtonsoft.Json.JsonTextWriter 的格式設(shè)置選項</param>        /// <param name="jsonSettings">在一個 Newtonsoft.Json.JsonSerializer 對象上指定設(shè)置,如果為null,則使用默認(rèn)設(shè)置</param>        /// <typeparam name="T">反序列化對象的類型</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對象        /// <para>如果發(fā)生JsonSerializationException異常,再以集合的方式重試一次,取出集合的第一個dynamic對象。</para>        /// <para>轉(zhuǎn)換失敗,或發(fā)生其它異常,則返回dynamic對象的默認(rèn)值</para>        /// </summary>        /// <param name="json">需要反序列化的JSON字符串</param>        /// <returns>dynamic對象</returns>        public static dynamic FromJson(this string json)        {            return FromJson<dynamic>(json, Formatting.None, JsonSettings);        }        /// <summary>        /// 反序列化JSON數(shù)據(jù)到指定的.NET類型對象        /// <para>如果發(fā)生JsonSerializationException異常,再以集合的方式重試一次,取出集合的第一個T對象。</para>        /// <para>轉(zhuǎn)換失敗,或發(fā)生其它異常,則返回T對象的默認(rèn)值</para>        /// </summary>        /// <param name="json">需要反序列化的JSON字符串</param>        /// <typeparam name="T">反序列化對象的類型</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è)置,序列化對象到JSON格式的字符串        /// </summary>        /// <param name="obj">任意一個對象</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ā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 师宗县| 河池市| 巨鹿县| 通城县| 福海县| 永顺县| 达日县| 临猗县| 宿迁市| 上思县| 无极县| 车致| 厦门市| 大竹县| 策勒县| 韩城市| 胶南市| 安泽县| 永平县| 汪清县| 曲水县| 方山县| 浮梁县| 石泉县| 曲周县| 开原市| 安达市| 庐江县| 孟州市| 平舆县| 广丰县| 牡丹江市| 吉林省| 九台市| 高州市| 绥江县| 杂多县| 盐亭县| 镇康县| 郓城县| 晋江市|