zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    ubuntu:activate root
    C/C++ char* arr与char arr[]的区别(反汇编解析)
    [转]关于编写Nios II的延时函数的一点心得
    [转]Xilinx Vivado的使用详细介绍(1):创建工程、编写代码、行为仿真、Testbench
    [转]Vivado中IP的使用方法
    [转]Vivado IP核生成设置
    [转]VHDL中数据类型转换与移位(STD_LOGIC_ARITH与NUMERIC_STD)
    [转]Vivado与SDK的联合调试方法-使用ILA
    [转]Vivado中ILA的使用
    [转]vivado硬件调试——mark_debug
  • 原文地址:https://www.cnblogs.com/a546558309/p/2597054.html
Copyright © 2011-2022 走看看