在c#中将json转换为数据表[重复]

Posted

技术标签:

【中文标题】在c#中将json转换为数据表[重复]【英文标题】:convert json to datatable in c# [duplicate] 【发布时间】: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转换为数据表? 条件:

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

【问题讨论】:

【参考方案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

【讨论】:

以上是关于在c#中将json转换为数据表[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中将 .json 文件转换为字符串 [重复]

在 C# 中将数据表转换为 JSON

在 C# 中将 JSON 数组转换为 XML

在 C# 中将通用列表转换为数据集 [关闭]

YamlDotNet 在 C# 中将 YAML 转换为 JSON

在c#中将html转换为json