.Net Core API的一個Json轉換Help類

using Nancy.Json;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;

namespace _SCscHero.Base.Help
{
    /// <summary>
    /// Json轉換幫助類
    /// </summary>
    public static class JsonHelper
    {
        /// <summary>
        /// 對象轉JSON
        /// </summary>
        /// <param name="obj">對象</param>
        /// <returns>JSON格式的字符串</returns>
        public static string ObjectToJSON(object obj)
        {
            JavaScriptSerializer jss = new JavaScriptSerializer();
            try
            {
                return jss.Serialize(obj);
            }
            catch (Exception ex)
            {

                throw new Exception("JSONHelper.ObjectToJSON(): " + ex.Message);
            }
        }

        /// <summary>
        /// 數據錶轉鍵值對集合
        /// 把DataTable轉成 List集合, 存每一行
        /// 集合中放的是鍵值對字典,存每一列
        /// </summary>
        /// <param name="dt">數據表</param>
        /// <returns>哈希表數組</returns>
        public static List<Dictionary<string, object>> DataTableToList(DataTable dt)
        {
            List<Dictionary<string, object>> list
                 = new List<Dictionary<string, object>>();

            foreach (DataRow dr in dt.Rows)
            {
                Dictionary<string, object> dic = new Dictionary<string, object>();
                foreach (DataColumn dc in dt.Columns)
                {
                    dic.Add(dc.ColumnName, dr[dc.ColumnName]);
                }
                list.Add(dic);
            }
            return list;
        }

        /// <summary>
        /// 數據集轉鍵值對數組字典
        /// </summary>
        /// <param name="dataSet">數據集</param>
        /// <returns>鍵值對數組字典</returns>
        public static Dictionary<string, List<Dictionary<string, object>>> DataSetToDic(DataSet ds)
        {
            Dictionary<string, List<Dictionary<string, object>>> result = new Dictionary<string, List<Dictionary<string, object>>>();

            foreach (DataTable dt in ds.Tables)
                result.Add(dt.TableName, DataTableToList(dt));

            return result;
        }

        /// <summary>
        /// 數據錶轉JSON
        /// </summary>
        /// <param name="dataTable">數據表</param>
        /// <returns>JSON字符串</returns>
        public static string DataTableToJSON(DataTable dt)
        {
            return ObjectToJSON(DataTableToList(dt));
        }

        /// <summary>
        /// JSON文本轉對象,泛型方法
        /// </summary>
        /// <typeparam name="T">類型</typeparam>
        /// <param name="jsonText">JSON文本</param>
        /// <returns>指定類型的對象</returns>
        public static T JSONToObject<T>(string jsonText)
        {
            JavaScriptSerializer jss = new JavaScriptSerializer();
            try
            {
                return jss.Deserialize<T>(jsonText);
            }
            catch (Exception ex)
            {
                throw new Exception("JSONHelper.JSONToObject(): " + ex.Message);
            }
        }

        /// <summary>
        /// 將JSON文本轉換爲數據表數據
        /// </summary>
        /// <param name="jsonText">JSON文本</param>
        /// <returns>數據表字典</returns>
        public static Dictionary<string, List<Dictionary<string, object>>> TablesDataFromJSON(string jsonText)
        {
            return JSONToObject<Dictionary<string, List<Dictionary<string, object>>>>(jsonText);
        }

        /// <summary>
        /// 將JSON文本轉換成數據行
        /// </summary>
        /// <param name="jsonText">JSON文本</param>
        /// <returns>數據行的字典</returns>
        public static Dictionary<string, object> DataRowFromJSON(string jsonText)
        {
            return JSONToObject<Dictionary<string, object>>(jsonText);
        }

        /// <summary>
        /// 字典轉json字符串
        /// </summary>
        /// <param name="myDic"></param>
        /// <returns></returns>
        public static string DictionaryToJson(Dictionary<string, string> myDic)
        {
            string jsonStr = JsonConvert.SerializeObject(myDic);
            return jsonStr;
        }

        /// <summary>
        /// json轉字典
        /// </summary>
        /// <param name="jsonStr"></param>
        /// <returns></returns>
        public static Dictionary<string, string> JsonToDictionary(string jsonStr)
        {
            Dictionary<string, string> dic = JsonConvert.DeserializeObject<Dictionary<string, string>>(jsonStr);
            return dic;
        }

        /// <summary>
        /// 將json字符串反序列化爲字典類型
        /// </summary>
        /// <typeparam name="TKey">字典key</typeparam>
        /// <typeparam name="TValue">字典value</typeparam>
        /// <param name="jsonStr">json字符串</param>
        /// <returns>字典數據</returns>
        public static Dictionary<TKey, TValue> DeserializeStringToDictionary<TKey, TValue>(string jsonStr)
        {
            if (string.IsNullOrEmpty(jsonStr))
                return new Dictionary<TKey, TValue>();
            Dictionary<TKey, TValue> jsonDict = JsonConvert.DeserializeObject<Dictionary<TKey, TValue>>(jsonStr);
            return jsonDict;
        }
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章