zoukankan      html  css  js  c++  java
  • Json数据转换为泛型集合(或实体)

    #region Json数据转换为泛型集合(或实体)
    
            /// <summary>
            /// 单条json数据转换为实体
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="str">字符窜(格式为{a:'',b:''})</param>
            /// <returns></returns>
            private static T ConvertToEntity<T>(string str)
            {
                Type t = typeof(T);
                object obj = Activator.CreateInstance(t);
                var properties = t.GetProperties();
                string m = str.Trim('{').Trim('}');
                string[] arr = m.Split(',');
                for (int i = 0; i < arr.Count(); i++)
                {
                    for (int k = 0; k < properties.Count(); k++)
                    {
                        string Name = arr[i].Substring(0, arr[i].IndexOf(":"));
                        object Value = arr[i].Substring(arr[i].IndexOf(":") + 1);
                        if (properties[k].Name.Equals(Name))
                        {
                            if (properties[k].PropertyType.Equals(typeof(int)))
                            {
                                properties[k].SetValue(obj, Convert.ToInt32(Value), null);
                            }
                            if (properties[k].PropertyType.Equals(typeof(string)))
                            {
                                properties[k].SetValue(obj, Convert.ToString(Value), null);
                            }
                            if (properties[k].PropertyType.Equals(typeof(long)))
                            {
                                properties[k].SetValue(obj, Convert.ToInt64(Value), null);
                            }
                            if (properties[k].PropertyType.Equals(typeof(decimal)))
                            {
                                properties[k].SetValue(obj, Convert.ToDecimal(Value), null);
                            }
                            if (properties[k].PropertyType.Equals(typeof(double)))
                            {
                                properties[k].SetValue(obj, Convert.ToDouble(Value), null);
                            }
                            if (properties[k].PropertyType.Equals(typeof(Nullable<int>)))
                            {
                                properties[k].SetValue(obj, Convert.ToInt32(Value), null);
                            }
                            if (properties[k].PropertyType.Equals(typeof(Nullable<decimal>)))
                            {
                                properties[k].SetValue(obj, Convert.ToDecimal(Value), null);
                            }
                            if (properties[k].PropertyType.Equals(typeof(Nullable<long>)))
                            {
                                properties[k].SetValue(obj, Convert.ToInt64(Value), null);
                            }
                            if (properties[k].PropertyType.Equals(typeof(Nullable<double>)))
                            {
                                properties[k].SetValue(obj, Convert.ToDouble(Value), null);
                            }
                            if (properties[k].PropertyType.Equals(typeof(Nullable<DateTime>)))
                            {
                                properties[k].SetValue(obj, Convert.ToDateTime(Value), null);
                            }
    
                        }
                    }
    
                }
                return (T)obj;
            }
    
            /// <summary>
            /// 多条Json数据转换为泛型数据
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="jsonArr">字符窜(格式为[{a:'',b:''},{a:'',b:''},{a:'',b:''}])</param>
            /// <returns></returns>
            public static List<T> ConvertTolist<T>(this string jsonArr)
            {
                if (!string.IsNullOrEmpty(jsonArr) && jsonArr.StartsWith("[") && jsonArr.EndsWith("]"))
                {
                    Type t = typeof(T);
                    var proPerties = t.GetProperties();
                    List<T> list = new List<T>();
                    string recive = jsonArr.Trim('[').Trim(']').Replace("'", "").Replace("\"", "");
                    string[] reciveArr = recive.Replace("},{", "};{").Split(';');
                    foreach (var item in reciveArr)
                    {
                        T obj = ConvertToEntity<T>(item);
                        list.Add(obj);
                    }
                    return list;
                }
                return null;
    
            }
            #endregion
    

      

  • 相关阅读:
    使用shell生成excel
    linux逻辑卷扩容
    nginx异常访问处理
    云主机上的k8s集群通信故障
    【转】 Pro Android学习笔记(七九):服务(4):远程服务的实现
    老李分享:系统可用性评估
    Develoment 和 Production 模式的区分打包
    TS基础学习笔记
    flanneld 安装
    Execl文件批量转csv文件
  • 原文地址:https://www.cnblogs.com/haiyabtx/p/2612319.html
Copyright © 2011-2022 走看看