C#分享辅助类:JSON辅助(JsonSerializerHandler)

30 篇文章 1 订阅

名称

方法

Json转为对象

JsonToDictionary

JsonToDictionaryObj

JsonToJObject

转为Json

ToJson

集合、数据表、数据行转JSON

DictionaryToJson

DataTableToJson

DataRowToJson

JsonSerializerHandler<T>

ToJson

JsonTo

ObjectToJson

ObjectsToJson

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Data;
using System.Reflection;

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;


namespace Wsfly
{
    /// <summary>
    /// Json序列化
    /// </summary>
    public class JsonSerializerHandler
    {
        #region JsonTo
        /// <summary>
        /// Json字符串转换为Dictionary
        /// </summary>
        /// <param name="json"></param>
        /// <returns></returns>
        public static Dictionary<string, string> JsonToDictionary(string json)
        {
            return JsonConvert.DeserializeObject<Dictionary<string, string>>(json);
        }
        /// <summary>
        /// Json字符串转换为Dictionary
        /// </summary>
        /// <param name="json"></param>
        /// <returns></returns>
        public static Dictionary<string, object> JsonToDictionaryObj(string json)
        {
            return JsonConvert.DeserializeObject<Dictionary<string, object>>(json);
        }
        /// <summary>
        /// Json转为JObject
        /// </summary>
        /// <param name="json"></param>
        /// <returns></returns>
        public static JObject JsonToJObject(string json)
        {
            return (JObject)JsonConvert.DeserializeObject(json);
        }
        #endregion

        #region ToJson
        /// <summary>
        /// 对象序列化为json
        /// </summary>
        /// <param name="list"></param>
        /// <returns></returns>
        public static string ToJson(object obj)
        {
            if (obj == null) return null;
            return JsonConvert.SerializeObject(obj);
        }
        /// <summary>
        /// 将DataTable转换为Json字符串
        /// </summary>
        /// <param name="dt"></param>
        /// <returns></returns>
        public static string ToJson(DataTable dt)
        {
            return DataTableToJson(dt, null);
        }
        /// <summary>
        /// 将DataTable转换为Json字符串
        /// </summary>
        /// <param name="dt"></param>
        /// <returns></returns>
        public static string ToJson(DataTable dt, string attrNames)
        {
            return DataTableToJson(dt, attrNames);
        }
        /// <summary>
        /// 将数据行转换为Json字符串
        /// </summary>
        /// <param name="row"></param>
        /// <returns></returns>
        public static string ToJson(DataRow row)
        {
            return DataRowToJson(row, null);
        }
        /// <summary>
        /// 将数据行转换为Json字符串
        /// </summary>
        /// <param name="row"></param>
        /// <returns></returns>
        public static string ToJson(DataRow row, string attrNames)
        {
            return DataRowToJson(row, attrNames);
        }

        #region 辅助
        /// <summary>
        /// 将Dictionary转移为Json字符串
        /// </summary>
        /// <param name="dictionary"></param>
        /// <returns></returns>
        private static string DictionaryToJson(Dictionary<string, string> dictionary)
        {
            if (dictionary == null || dictionary.Count <= 0) return null;

            string json = "{";

            foreach (string key in dictionary.Keys)
            {
                json += "'" + key + "'" + ":'" + dictionary[key] + "',";
            }

            json = json.Trim(',') + "}";

            return json;
        }
        /// <summary>
        /// 将DataTable转换为Json字符串
        /// </summary>
        /// <param name="dt"></param>
        /// <returns></returns>
        private static string DataTableToJson(DataTable dt, string attrNames)
        {
            if (dt == null || dt.Rows.Count <= 0) return null;

            string json = "[";

            foreach (DataRow row in dt.Rows)
            {
                json = DataRowToJson(row, attrNames) + ",";
            }

            json = json.Trim(',') + "]";

            return json;
        }
        /// <summary>
        /// 将数据行转换为Json字符串
        /// </summary>
        /// <param name="row"></param>
        /// <returns></returns>
        private static string DataRowToJson(DataRow row, string attrNames)
        {
            if (row == null || row.Table.Columns.Count <= 0) return null;

            string json = "{";

            attrNames = "," + attrNames.Trim(',') + ",";

            foreach (DataColumn col in row.Table.Columns)
            {
                if (!string.IsNullOrEmpty(attrNames))
                {
                    string colName = "," + col.ColumnName + ",";

                    if (!attrNames.Contains(colName)) continue;
                }

                json += "\"" + col.ColumnName + "\":\"" + row[col] + "\"";
            }

            json = json.Trim(',') + "}";

            return json;
        }
        #endregion

        #endregion
    }
    /// <summary>
    /// Json序列化
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public class JsonSerializerHandler<T> : JsonSerializerHandler
    {
        /// <summary>
        /// 对象序列化为Json字符串
        /// </summary>
        /// <param name="t"></param>
        /// <returns></returns>
        public static string ToJson(T obj)
        {
            return JsonConvert.SerializeObject(obj);
        }
        /// <summary>
        /// 将Json字符串序列化为对象
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="json"></param>
        /// <returns></returns>
        public static List<T> JsonTo(string json)
        {
            return JsonConvert.DeserializeObject<List<T>>(json);
        }
        /// <summary>
        /// 将实体类返回Json字符串
        /// </summary>
        /// <returns></returns>
        public static string ToJson(T model, string attrNames)
        {
            return ObjectToJson(model, attrNames);
        }
        /// <summary>
        /// 返回实体类列表Json字符串
        /// </summary>
        /// <param name="list"></param>
        /// <returns></returns>
        public static string ToJson(IList<T> list)
        {
            return JsonConvert.SerializeObject(list);
        }
        /// <summary>
        /// 返回实体类列表Json字符串
        /// </summary>
        /// <param name="list"></param>
        /// <returns></returns>
        public static string ToJson(IList<T> list, string attrNames)
        {
            return ObjectsToJson(list, attrNames);
        }
        /// <summary>
        /// 将实体类返回Json字符串
        /// </summary>
        /// <returns></returns>
        private static string ObjectToJson(T model, string attrNames)
        {
            if (model == null) return null;

            string json = "{";

            PropertyInfo[] properties = model.GetType().GetProperties();

            if (!string.IsNullOrEmpty(attrNames))
            {
                attrNames = "," + attrNames + ",";
            }

            foreach (PropertyInfo info in properties)
            {
                if (!string.IsNullOrEmpty(attrNames))
                {
                    if (!attrNames.Contains("," + info.Name + ",")) continue;
                }

                Type type = info.GetType();

                try
                {
                    json += "'" + info.Name + "'" + ":'" + info.GetValue(model, null) + "',";
                }
                catch { }
            }

            json = json.Trim(',') + "}";

            return json;
        }
        /// <summary>
        /// 返回实体类列表Json字符串
        /// </summary>
        /// <param name="list"></param>
        /// <returns></returns>
        private static string ObjectsToJson(IList<T> list, string attrNames)
        {
            if (list == null || list.Count <= 0) return null;

            string json = "[";

            foreach (T model in list)
            {
                json += ObjectToJson(model, attrNames) + ",";
            }

            json = json.Trim(',') + "]";

            return json;
        }
    }
}
/*
namespace System.Runtime.CompilerServices
{
    public class ExtensionAttribute : Attribute { }
}
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MOZ-Soft

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值