在進行數據交互或者數據持久化時,經常需要在不同的應用程序和系統間進行數據傳輸。而由于不同的程序和系統之間語言差異和格式不一致等問題,數據傳輸難度較大。JSON格式在這個時候就很適合用來進行數據傳輸,而C#也提供了一系列的JSON處理函數和庫,使得我們可以很方便的進行JSON轉DataTable的操作。
使用C#將JSON轉換成DataTable的方法也很簡單,我們只需要在代碼中添加相關的處理庫,并將JSON字符串傳入即可:
using System.Data; using Newtonsoft.Json; using Newtonsoft.Json.Linq; string jsonStr = "{'id':1,'name':'test','age':20,'createTime':'2019-06-01'}"; DataTable dt = new DataTable(); dt = JsonConvert.DeserializeObject<DataTable>(jsonStr);
上面的代碼中,我們首先在代碼開頭添加需要使用的庫,分別是System.Data、Newtonsoft.Json、Newtonsoft.Json.Linq。接下來就是定義一個JSON字符串和一個空的DataTable數據表,我們使用JsonConvert.DeserializeObject方法來將JSON字符串轉換成DataTable。
當然,在實際項目中,我們很可能需要處理的JSON數據不止一個,而是包含多個JSON對象的數組,這個時候我們需要用到JArray對象:
string jsonStr = "[{'id':1,'name':'test1','age':20,'createTime':'2019-06-01'}, {'id':2,'name':'test2','age':21,'createTime':'2019-06-02'}, {'id':3,'name':'test3','age':22,'createTime':'2019-06-03'}]"; JArray jarr = (JArray)JsonConvert.DeserializeObject(jsonStr); DataTable dt = ConvertDataTable(jarr); private DataTable ConvertDataTable(JArray jarr) { DataTable dt = new DataTable(); for (int i = 0; i < jarr.Count; i++) { JObject jo = (JObject)jarr[i]; if (i == 0) { foreach (JProperty jp in jo.Properties()) { dt.Columns.Add(jp.Name); } } DataRow dr = dt.NewRow(); foreach (JProperty jp in jo.Properties()) { dr[jp.Name] = jp.Value; } dt.Rows.Add(dr); } return dt; }
可以發現,在處理多個JSON對象數組時,我們將JArray對象轉換成DataTable表格的方式稍有不同,需要在代碼中首先定義一個ConvertDataTable()方法,并將JArray對象傳入該方法中。
以上就是C#將JSON轉換成DataTable的方法介紹。需要注意的是,DataTable數據表的結果和JSON格式的數據結構不完全相同,因此在進行轉換時,要充分了解JSON的數據結構和DataTable的數據結構設計。