zoukankan      html  css  js  c++  java
  • 多条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>(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;

    }

    用法: List<RainModel> RainModelList = ConvertTolist<RainModel>(resuledata);

  • 相关阅读:
    2020年下半年学习进度04
    2020年下半年学习进度03
    2020年下半年学习进度02
    2020年下半年学习进度01
    数据爬取
    个人课程总结
    Syncnavigator V8.6.2在线说明书
    SyncNavigator V8.6.2企业版下载链接
    Syncnavigator V8.6.2帮助文档(说明书)下载
    SQL Server 自动同步到 MySQL
  • 原文地址:https://www.cnblogs.com/fyy1003668657/p/4674246.html
Copyright © 2011-2022 走看看