1. Json file
appsettings.json
"UploadData": [
{
"item_a": "",
"item_b": "",
"item_c": "",
"d1": "Jan-22",
"d2": "Jan-22",
"d3": "Jan-22",
"d4": "Jan-22",
"d5": "Jan-22",
"d6": "Feb-22",
"d7": "Feb-22",
"d8": "Feb-22",
"d9": "Feb-22",
"d10": "Feb-22",
"d11": "Mar-22",
"d12": "Mar-22",
"d13": "Mar-22",
"d14": "Mar-22",
"d15": "Mar-22"
},
{
"item_a": "项目1",
"item_b": "项目2",
"item_c": "项目3",
"d1": "W1",
"d2": "W2",
"d3": "W3",
"d4": "W4",
"d5": "W5",
"d6": "W1",
"d7": "W2",
"d8": "W3",
"d9": "W4",
"d10": "W5",
"d11": "W1",
"d12": "W2",
"d13": "W3",
"d14": "W4",
"d15": "W5"
},
{
"item_a": "产能",
"item_b": "FCST(K)",
"item_c": "预估",
"d1": "1",
"d2": "2",
"d3": "3",
"d4": "4",
"d5": "5",
"d6": "6",
"d7": "7",
"d8": "8",
"d9": "9",
"d10": "10",
"d11": "11",
"d12": "12",
"d13": "13",
"d14": "14",
"d15": "15"
},
{
"item_a": "产能",
"item_b": "FCST(K)",
"item_c": "实际",
"d1": "15",
"d2": "14",
"d3": "13",
"d4": "12",
"d5": "11",
"d6": "10",
"d7": "9",
"d8": "8",
"d9": "7",
"d10": "6",
"d11": "5",
"d12": "4",
"d13": "3",
"d14": "2",
"d15": "1"
}
]
2. Read json data from the file
private string GetJsonData()
{
string data = string.Empty;
using (var file = new StreamReader("appsettings.json"))
{
using (var reader = new JsonTextReader(file))
{
var jObj = (JObject)JToken.ReadFrom(reader);
var secJt = jObj["UploadData"];
data = secJt.ToString();
}
}
return data;
}
3. JsonToDataTable
private DataTable JsonToDataTable(string strJson)
{
DataTable tb = null;
//获取数据
Regex rg = new Regex(@"(?<={)[^}]+(?=})");
MatchCollection mc = rg.Matches(strJson);
for (int i = 0; i < mc.Count; i++)
{
string strRow = mc[i].Value;
string[] strRows = strRow.Split(',');
//创建表
if (tb == null)
{
tb = new DataTable();
tb.TableName = "";
foreach (string str in strRows)
{
DataColumn dc = new DataColumn();
string[] strCell = str.Split(':');
dc.ColumnName = strCell[0].ToString().Replace("\"", "").Trim();
tb.Columns.Add(dc);
}
tb.AcceptChanges();
}
//增加内容
DataRow dr = tb.NewRow();
for (int r = 0; r < strRows.Length; r++)
{
dr[r] = strRows[r].Split(':')[1].Trim().Replace(",", ",").Replace(":", ":").Replace("/", "").Replace("\"", "").Trim();
}
tb.Rows.Add(dr);
tb.AcceptChanges();
}
return tb;
}
4. Test
var jsonData = this.GetJsonData();
var dt = this.JsonToDataTable(jsonData);