我有以下格式的JSON响应。如何从ASP.NET或c#代码中的JSON响应中检索数据表?

时间:2018-01-31 07:26:08

标签: c# asp.net json

从API请求中获取JSON响应,如下所示。我想从这个JSON响应中创建一个数据表。如何使用C#.net应用程序从JSON响应中检索数据表?我是新手,所以请为我建议一个解决方案。

 {
    "status": "success",
    "data": [
        [
            {
                "value": "Department of Information Technology and Communication",
                "key": "POSTED_DEPARTMENT"
            },
            {
                "value": 5800002,
                "key": "APPOINTING_DEPT_ID"
            },
            {
                "value": 170,
                "key": "EMP_CADRE"
            },
            {
                "value": "Department of Information Technology and Communication",
                "key": "APPOINTING_DEPT"
            },
            {
                "value": "RJBI198009003722",
                "key": "UNIQUE_ID"
            },
            {
                "value": 5800002,
                "key": "POSTED_DEPARTMENT_ID"
            },
            {
                "value": 3004216,
                "key": "EMP_ID"
            },
            {
                "value": null,
                "key": "DATE_OF_BIRTH"
            },
            {
                "value": "06 Jan 2018",
                "key": "IPR_SUBMITTED_DATE"
            },
            {
                "value": "Programmer",
                "key": "DESIGNATION"
            },
            {
                "value": null,
                "key": "PROPERTY_YEAR"
            },
            {
                "value": "DINESHARORA",
                "key": "EMPLOYEE_NAME"
            },
            {
                "value": "Mr.MURLI MANOHAR ARORA",
                "key": "FATHER_NAME"
            },
]
],
 "msg": "Data Successfully Retrived"
}

1 个答案:

答案 0 :(得分:0)

我想这是将复杂的JSON响应转换为DataTable的正确方法。试试下面的内容。创建用于反序列化JSON数据的类

 public class Example
{
    public string status { get; set; }
    public IList<IList<Datum>> data { get; set; }
    public string msg { get; set; }
}

public class Datum
{
    public object value { get; set; }
    public string key { get; set; }
}

我选择示例JSON格式并尝试使用方法

上的代码
string filter1 =  "{\"status\": \"success\", \"data\": [[ {\"value\": \"RJBI198009003722\",  \"key\": \"UNIQUE_ID\"},  {\"value\": 5800002, \"key\": \"POSTED_DEPARTMENT_ID\"},],[{\"value\": \"Department of Information Technology and Communication\", \"key\": \"POSTED_DEPARTMENT\" }] ],\"msg\":\"Data Successfully Retrived\"}";

        var dat = JsonConvert.DeserializeObject<Example>(filter1);
        var result = new List<Datum>();
        foreach (var item in dat.data)
        {
            for (int i = 0; i < item.Count; i++)
            {
                result.Add(item[i]);
            }

        }
        DataTable table = new DataTable();
        table = ConvertToDataTable<Datum>(result);

以下是将任何列表对象转换为数据表的方法。

public static DataTable ConvertToDataTable<T>(IList<T> data)
    {
        PropertyDescriptorCollection properties =
           TypeDescriptor.GetProperties(typeof(T));
        DataTable table = new DataTable();
        foreach (PropertyDescriptor prop in properties)
            table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
        foreach (T item in data)
        {
            DataRow row = table.NewRow();
            foreach (PropertyDescriptor prop in properties)
                row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
            table.Rows.Add(row);
        }
        return table;

    }

数据表格式如下所示。

enter image description here

谢谢!