【问题标题】:convert json to datatable in c# [duplicate]在c#中将json转换为数据表[重复]
【发布时间】:2021-05-19 12:07:10
【问题描述】:
{
  "data": [
        {
            "sheetname": "Sheet1",
            "datas": [
                {
                    "cloumn1": "6986",
                    "cloumn2": "1",
                    "cloumn3": "Server01"
                }
            ]
        },
        {
            "sheetname": "Sheet2",
            "datas": [
                {
                    "cloumn1": "6986",
                    "cloumn2": "1",
                    "cloumn3": "Server01"
                },
                {
                    "cloumn1": "6986",
                    "cloumn2": "1",
                    "cloumn3": "Server01"
                }
            ]
        }
    ]
}

如何将此json转换为数据表?
条件:

  1. “数据”属性中的每个项目都应位于不同的选项卡中。(在上面的示例中,有 2 个项目,因此应创建 2 个工作表)
  2. 如果“数据”属性包含 1 个对象 --->1 个工作表中的 1 行
  3. 如果“数据”属性包含 2 个对象 --->1 张纸中有 2 行

【问题讨论】:

    标签: c# arrays json .net deserialization


    【解决方案1】:

    将你的 jsonstring 反序列化为某个类

    List<User> UserList = JsonConvert.DeserializeObject<List<User>>(jsonString);
    

    extension method 写入您的项目

    public static DataTable ToDataTable<T>(this IList<T> data)
    {
    PropertyDescriptorCollection props =
    TpeDescriptor.GetProperties(typeof(T));
    DataTable table = new DataTable();
    for(int i = 0 ; i < props.Count ; i++)
    {
        PropertyDescriptor prop = props[i];
        table.Columns.Add(prop.Name, prop.PropertyType);
    }
    object[] values = new object[props.Count];
    foreach (T item in data)
    {
        for (int i = 0; i < values.Length; i++)
        {
            values[i] = props[i].GetValue(item);
        }
        table.Rows.Add(values);
    }
    return table;        
    }
    

    类似电话扩展方法

    UserList.ToDataTable<User>();
    

    此代码取自这里:Convert JSON to DataTable

    【讨论】:

      猜你喜欢
      • 2013-06-28
      • 2017-10-16
      • 1970-01-01
      • 1970-01-01
      • 2021-05-23
      • 2020-04-13
      • 1970-01-01
      • 2012-10-09
      • 2018-12-16
      相关资源
      最近更新 更多