JSON to DataTable

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);

猜你喜欢

转载自blog.csdn.net/wish366/article/details/123202278