将 JSON 子类转换为 DataTable (C#)

问题描述 投票:0回答:1

我导入了一些 JSON 内容并创建了一个类来反序列化它们。

public class CONTENTSFROMSERVER
{
    public List<DATA> data { get; set; }
    public META meta { get; set; }
    public LINKS links { get; set; }
}
public class DATA
{
    public string type { get; set; }
    public string id { get; set; }
    public ATTRIBUTES attributes { get; set; }
}
public class ATTRIBUTES
{
    public string field_01 { get; set; }
    public string field_02 { get; set; }
    public string field_03 { get; set; }
}
...

到目前为止一切顺利(本文中的课程尚未完成,因为缺少的部分对于问题并不重要)。

然后我得到请求的内容响应:

String contents = Resultado.Content.ReadAsStringAsync().Result;

最后我将该内容反序列化到

CONTENTSFROMSERVER
类中:

var Values = JsonConvert.DeserializeObject<CONTENTSFROMSERVER>(contents);

一切正常,最后一部分没有遇到任何问题。

如果有人知道该怎么做,我想要的是用

DataTable
类中的数据填充
ATTRIBUTES

类似:

DataTable datatable = Values.data.attributes;

有没有简单的方法呢?或者我是否必须构建数据表,从类中检索值并稍后填充数据表?如果是这样,我该怎么做?

我知道网络上甚至本网站上有很多关于此事的帖子,但我找不到我的具体问题的答案。

c# json class datatable
1个回答
0
投票

您可以使用 LINQ 的

Select
CopyToDataTable
来填充数据表。

DataTable dataTable = Values.data
    .Select(dataItem => dataItem.attributes)
    .Select(attributes =>
    {
        var row = dataTable.NewRow();
        attributes.GetType().GetProperties()
            .ToList()
            .ForEach(property => row[property.Name] = property.GetValue(attributes));
        return row;
    })
    .CopyToDataTable();

© www.soinside.com 2019 - 2024. All rights reserved.