C# 数据表标准格式的嵌套JSON

C# 数据表标准格式的嵌套JSON,c#,json,datatable,C#,Json,Datatable,对于包含嵌套集合的give JSON,数据表的标准/正确形式是什么 JSON文件 { "F1":1, "F2":2, "F4":[{"E1":1,"E3":3}] "F3":[ { "E1":3, "E2":4 }, { "E1":5, "E2":6 }, { "E1":7, "E2":8, "E3":[ {

对于包含嵌套集合的give JSON,数据表的标准/正确形式是什么

JSON文件

    {
"F1":1,
"F2":2,
"F4":[{"E1":1,"E3":3}]
"F3":[
    {
        "E1":3,
        "E2":4
    },
    {
        "E1":5,
        "E2":6
    },  
    {
        "E1":7,
        "E2":8,
        "E3":[
            {
                "D1":9,
                "D2":10
            }
        ]
    },      
]
}  

将jsonstring反序列化到某个类

List<User> UserList = JsonConvert.DeserializeObject<List<User>>(jsonString);
List UserList=JsonConvert.DeserializeObject(jsonString);
为您的项目编写以下扩展方法

public static DataTable ToDataTable<T>(this IList<T> data)
{
    PropertyDescriptorCollection props =
    TypeDescriptor.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;        
}
公共静态数据表到数据表(此IList数据)
{
PropertyDescriptorCollection道具=
GetProperties(typeof(T));
DataTable=新的DataTable();
for(int i=0;i
调用扩展方法like

 DataTable dt = new DataTable();
 dt = UserList.ToDataTable<User>();
DataTable dt=newdatatable();
dt=UserList.ToDataTable();

答案由

Thank Rajesh引用。如果我的JSON中没有嵌套集合,这将很好地工作。但是我问的是以DataTable的形式表示数据的标准格式,也就是说,我问的是上述示例中没有任何数据丢失的datatble表示。