zoukankan      html  css  js  c++  java
  • (asp.net )DataTable与Json相互转化

    将Datatable转化为Json数据形式

    #region 方法[DataTableToJson]DataTable转化为Json形式
    public static string DataTableToJson(string jsonName, DataTable dt)
    {
    StringBuilder Json = new StringBuilder();
    Json.Append("{"" + jsonName + "":[");
    if (dt.Rows.Count > 0)
    {
    for (int i = 0; i < dt.Rows.Count; i++)
    {
    Json.Append("{");
    for (int j = 0; j < dt.Columns.Count; j++)
    {
    Json.Append(""" + dt.Columns[j].ColumnName.ToString() + "":"" + dt.Rows[i][j].ToString() + """);
    if (j < dt.Columns.Count - 1)
    {
    Json.Append(",");
    }
    }
    Json.Append("}");
    if (i < dt.Rows.Count - 1)
    {
    Json.Append(",");
    }
    }
    }
    Json.Append("]}");
    return Json.ToString();
    }
    #endregion

    将Json的数据形式转化为Datatable

    #region 方法[JsonToDataTable]Json转化为Datatable形式
    public static DataTable JsonToDataTable(string strJson)
    {
    //取出表名
    Regex rg = new Regex(@"(?<={)[^:]+(?=:[)", RegexOptions.IgnoreCase);
    string strName = rg.Match(strJson).Value;
    DataTable tb = null;
    string Str_Head = "";

    //去除表名
    strJson = strJson.Substring(strJson.IndexOf("[") + 1);
    strJson = strJson.Substring(0, strJson.IndexOf("]"));

    //获取数据
    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 = strName;
    foreach (string str in strRows)
    {
    DataColumn dc = new DataColumn();
    string[] strCell = str.Split(':');

    Str_Head = strCell[0].ToString().Substring(0, strCell[0].ToString().Length - 1);//去除最后一位字符串
    Str_Head = Str_Head.Substring(1);//去除第一位字符串
    dc.ColumnName = Str_Head;
    //dc.ColumnName = strCell[0].ToString();

    tb.Columns.Add(dc);
    }
    tb.AcceptChanges();
    }

    //增加内容
    DataRow dr = tb.NewRow();
    for (int r = 0; r < strRows.Length; r++)
    {
    //Str_Cell = strRows[r].Split(':')[1].Trim().Replace(",", ",").Replace(":", ":").Replace("/", "").Substring(0, strRows[1].ToString().Length - 1);
    //Str_Cell = Str_Cell.Substring(1);
    //dr[r] = Str_Cell;
    dr[r] = strRows[r].Split(':')[1].Trim().Replace(",", ",").Replace(":", ":").Replace("/", "");
    dr[r] = dr[r].ToString().Substring(0, Convert.ToString(dr[r]).Length - 1);//去除最后一位字符串
    dr[r] = Convert.ToString(dr[r]).Substring(1);//去除第一位字符串
    }
    tb.Rows.Add(dr);
    tb.AcceptChanges();
    }

    return tb;
    }
    #endregion

  • 相关阅读:
    949. Largest Time for Given Digits
    450. Delete Node in a BST
    983. Minimum Cost For Tickets
    16. 3Sum Closest java solutions
    73. Set Matrix Zeroes java solutions
    347. Top K Frequent Elements java solutions
    215. Kth Largest Element in an Array java solutions
    75. Sort Colors java solutions
    38. Count and Say java solutions
    371. Sum of Two Integers java solutions
  • 原文地址:https://www.cnblogs.com/JBlogs/p/3716511.html
Copyright © 2011-2022 走看看