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