zoukankan      html  css  js  c++  java
  • ObjectToJson,JsonToObject,JsonToObjectList,ObjectListToJson

    using System.Runtime.Serialization;
    using System.Runtime.Serialization.Formatters.Binary;
    using System.Runtime.Serialization.Json;
    /// <summary>
        /// Json工具类
        /// </summary>
        public class JsonUtility
        {
            private static JsonUtility _instance = new JsonUtility();
    
            /// <summary>
            /// 单例
            /// </summary>
            public static JsonUtility Instance
            {
                get { return _instance; }
                set { _instance = value; }
            }
    
            /// <summary>
            /// Json转对象
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="json"></param>
            /// <returns></returns>
            public T JsonToObject<T>(string json)
            {
                var ser = new DataContractJsonSerializer(typeof(T));
                var ms = new MemoryStream(Encoding.UTF8.GetBytes(json));
                var jsonObject = (T)ser.ReadObject(ms);
                ms.Close();
                return jsonObject;
            }
    
            /// <summary>
            /// Json转对象列表
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="json"></param>
            /// <returns></returns>
            public IList<T> JsonToObjectList<T>(string json)
            {
                json = json.Replace("}]}", "");
                var startIndex = json.IndexOf(":[{") + 3;
                var newJson = json.Substring(startIndex);
                var regex = new Regex("},{");
                var jsons = regex.Split(newJson);
    
                if (newJson.Contains("\":[]}"))
                {
                    throw new Exception("快件单号没有找到");
                }
                var list = new List<T>();
    
                foreach (var item in jsons)
                {
                    var temp = "{" + item + "}";
                    list.Add(JsonToObject<T>(temp));
                }
                return list;
            }
    
            /// <summary>
            /// 对象转Json
            /// </summary>
            /// <param name="obj"></param>
            /// <returns></returns>
            public string ObjectToJson(object obj)
            {
                var serializer = new DataContractJsonSerializer(obj.GetType());
                using (var ms = new MemoryStream())
                {
                    serializer.WriteObject(ms, obj);
                    var sb = new StringBuilder();
                    sb.Append(Encoding.UTF8.GetString(ms.ToArray()));
                    return sb.ToString();
                }
            }
    
            /// <summary>
            /// 对象列表转Json
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="objectList"></param>
            /// <returns></returns>
            public string ObjectListToJson<T>(IList<T> objectList)
            {
                return ObjectListToJson(objectList, "");
            }
    
            /// <summary>
            /// 对象列表转Json
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="objectList"></param>
            /// <param name="className"></param>
            /// <returns></returns>
            public string ObjectListToJson<T>(IList<T> objectList, string className)
            {
                var sbResult = new StringBuilder();
                sbResult.Append("{");
                className = string.IsNullOrEmpty(className) ? objectList[0].GetType().Name : className;
                sbResult.Append("\"" + className + "\":[");
    
                for (var i = 0; i < objectList.Count; i++)
                {
                    var item = objectList[i];
                    if (i > 0)
                    {
                        sbResult.Append(",");
                    }
                    sbResult.Append(ObjectToJson(item));
                }
    
                sbResult.Append("]}");
                return sbResult.ToString();
            }
        } 
  • 相关阅读:
    我理解的朴素贝叶斯模型
    P2P贷款全攻略,贷前、贷中、贷后工作事项解析
    Jupyter Notebook 快速入门
    R语言|数据特征分析
    R语言︱处理缺失数据&&异常值检验、离群点分析、异常值处理
    mysql explain执行计划详解
    R语言中的回归诊断-- car包
    一行代码搞定 R 语言模型输出!(使用 stargazer 包)
    基于R语言的时间序列指数模型
    基于R语言的ARIMA模型
  • 原文地址:https://www.cnblogs.com/tearer/p/2759511.html
Copyright © 2011-2022 走看看