• Json数据转换为泛型集合(或实体)


    有需要的看一下哦!此方法针对于前端页面向后台传递Json数据集合,如:[{'a':'','b':""},....]格式的数据,然后在后台进行拆分,然后批量导入数据库

            #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
  • 相关阅读:
    2019上海网络赛 F. Rhyme scheme 普通dp
    2019牛客多校第七场E Find the median 权值线段树+离散化
    2019南昌网络赛  I. Yukino With Subinterval 树状数组套线段树
    ACM-ICPC 2018 徐州赛区网络预赛 I. query 树状数组
    计算机专业 程序员技术练级攻略(转载)
    HDU 3642 求体积交集
    2019牛客暑期多校训练营(第三场)F Planting Trees 单调队列
    Manthan, Codefest 16 G. Yash And Trees dfs序+线段树+bitset
    POJ 1177 矩形周长并 模板
    HDU 4614 线段树+二分查找
  • 原文地址:https://www.cnblogs.com/a546558309/p/2597054.html
Copyright © 2020-2023  润新知