DataTable 转换成 Json

来源:互联网 发布:淘宝网商城女装冬装 编辑:程序博客网 时间:2024/06/04 18:35

(1)
using System.Text;

    public string DataTableToJson(DataTable table)    {        var JsonString = new StringBuilder();        if (table.Rows.Count > 0)        {            JsonString.Append("[");            for (int i = 0; i < table.Rows.Count; i++)            {                JsonString.Append("{");                for (int j = 0; j < table.Columns.Count; j++)                {                    if (j < table.Columns.Count - 1)                    {                        JsonString.Append("\"" + table.Columns[j].ColumnName.ToString() + "\":" + "\"" + table.Rows[i][j].ToString() + "\",");                    }                    else if (j == table.Columns.Count - 1)                    {                        JsonString.Append("\"" + table.Columns[j].ColumnName.ToString() + "\":" + "\"" + table.Rows[i][j].ToString() + "\"");                    }                }                if (i == table.Rows.Count - 1)                {                    JsonString.Append("}");                }                else                {                    JsonString.Append("},");                }            }            JsonString.Append("]");        }        return JsonString.ToString();    }

(2)
使用Json.Net DLL (Newtonsoft)。

这个方法中要添加Json.Net DLL引用,我们可以从Newtonsoft下载Json.Net DLL,再导入命名空间,代码如下:

using Newtonsoft.Json;  public string DataTableToJsonWithJsonNet(DataTable table)     {       string JsonString=string.Empty;       JsonString = JsonConvert.SerializeObject(table);       return JsonString;      }将json转换为DataTable

///
/// 将json转换为DataTable
///
/// 得到的json
///
private DataTable JsonToDataTable(string strJson)
{
//转换json格式
strJson = strJson.Replace(“,\”“, “*\”“).Replace(“\”:”, “\”#”).ToString();
//取出表名
var rg = new Regex(@”(?<={)[^:]+(?=:[)”, RegexOptions.IgnoreCase);
string strName = rg.Match(strJson).Value;
DataTable tb = null;
//去除表名
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)                {                    var dc = new DataColumn();                    string[] strCell = str.Split('#');                    if (strCell[0].Substring(0, 1) == "\"")                    {                        int a = strCell[0].Length;                        dc.ColumnName = strCell[0].Substring(1, a - 2);                    }                    else                    {                        dc.ColumnName = strCell[0];                    }                    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("\"", "");            }            tb.Rows.Add(dr);            tb.AcceptChanges();        }        return tb;    }
0 0