c# - 在c#中将json转换为数据表
问题描述
{
"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 行
解决方案
将您的 jsonstring 反序列化为某个类
List<User> UserList = JsonConvert.DeserializeObject<List<User>>(jsonString);
将以下扩展方法写入您的项目
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
推荐阅读
- database - 如何在 Prestashop 的 .tpl 文件中从数据库中获取更多数据
- c++ - 空基础优化子对象的地址
- python - 为什么python中“__init__”方法中的“self”是必需的?
- regex - 如果不是第一个字符,则匹配字符
- javascript - 计算数组中的距离字符串/数字
- python - 在 python dash 中分配函数以丢弃淹没的元素
- vb.net - 使用 Oracle 11g 选择查询中的多个条件
- java - 找出实际加载了哪些 Java 类并减少 jar
- reactjs - Graphql Apollo 客户端问题:[网络错误]:SyntaxError:JSON 输入意外结束
- hibernate - Spring Boot 页面加载缓慢