使用Newtonsoft JsonConvert反序列化Json数据到DataTable

使用Newtonsoft JsonConvert反序列化Json数据到DataTable

要用到Newtonsoft.Json.dll

简单了解JArray和JObject

string json = @"[
            { id: 1, title: '必订款', no: 'bdk', flag_ka: 'y' },
            { id: 2, title: '必订规格', no: 'bdgg', flag_ka: 'n' }
        ]";
Newtonsoft.Json.Linq.JArray array = Newtonsoft.Json.JsonConvert.DeserializeObject(json) as JArray;
for (int i = 0; i < array.Count; i++)
{
    JObject obj = array[i] as JObject;
    int id = Convert.ToInt32(obj["id"]);
    var title = obj["title"];
}

Json转DataTable

 1 string json = @"[
 2             { id: 1, title: '必订款', no: 'bdk', flag_ka: 'y' },
 3             { id: 2, title: '必订规格', no: 'bdgg', flag_ka: 'n' }
 4         ]";
 5 Newtonsoft.Json.Linq.JArray array = Newtonsoft.Json.JsonConvert.DeserializeObject(json) as JArray;
 6 StringBuilder columns = new StringBuilder();
 7 DataTable table = new DataTable();
 8 JObject objColumns = array[0] as JObject;
 9 //构造表头
10 foreach (JToken jkon in objColumns.AsEnumerable<JToken>())
11 {
12     string name = ((JProperty)(jkon)).Name;
13     columns.Append(name + ",");
14     table.Columns.Add(name);
15 }
16 //向表中添加数据
17 for (int i = 0; i < array.Count; i++)
18 {
19     DataRow row = table.NewRow();
20     JObject obj = array[i] as JObject;
21     foreach (JToken jkon in obj.AsEnumerable<JToken>())
22     {
23         string name = ((JProperty)(jkon)).Name;
24         string value = ((JProperty)(jkon)).Value.ToString();
25         row[name] = value;
26     }
27     table.Rows.Add(row);
28 }