Json DataTable

来源:互联网 发布:大学智慧树网络课程 编辑:程序博客网 时间:2024/04/29 20:02
在JS中我们需要对对象进行JSON序列化通常使用JSON.net, 不过它对DataTable的序列化不能很好的满足的我们的需求,
后来在CodeProject发现一个兄弟已经写好了 Convert ASP.NET DataTable to JSON, to use datatable in JAVASCRIPT ,记一下,免得忘记了。
 
public string JsonToDataTable(DataTable dt)        {            /****************************************************************************             * Without goingin to the depth of the functioning of this Method, i will try to give an overview             * As soon as this method gets a DataTable it starts to convert it into JSON String,             * it takes each row and ineach row it creates an array of cells and in each cell is having its data             * on the client side it is very usefull for direct binding of object to  TABLE.             * Values Can be Access on clien in this way. OBJ.TABLE[0].ROW[0].CELL[0].DATA              * NOTE: One negative point. by this method user will not be able to call any cell by its name.             * *************************************************************************/            StringBuilder JsonString = new StringBuilder();            JsonString.Append("{ ");            JsonString.Append("/"TABLE/":[{ ");            JsonString.Append("/"ROW/":[ ");            for (int i = 0; i < dt.Rows.Count; i++)            {                JsonString.Append("{ ");                JsonString.Append("/"COL/":[ ");                for (int j = 0; j < dt.Columns.Count; j++)                {                    if (j < dt.Columns.Count - 1)                    {                        JsonString.Append("{" + "/"DATA/":/"" + dt.Rows[i][j].ToString() + "/"},");                    }                    else if (j == dt.Columns.Count - 1)                    {                        JsonString.Append("{" + "/"DATA/":/"" + dt.Rows[i][j].ToString() + "/"}");                    }                }                /*end Of String*/                if (i == dt.Rows.Count - 1)                {                    JsonString.Append("]} ");                }                else                {                    JsonString.Append("]}, ");                }            }            JsonString.Append("]}]}");            return JsonString.ToString();        }        public string DataTableToJson(DataTable dt)        {                     /*****************************************************************************            * Without goingin to the depth of the functioning of this Method, i will try to give an overview            * As soon as this method gets a DataTable it starts to convert it into JSON String,            * it takes each row and in each row it grabs the cell name and its data.             * This kind of JSON is very usefull when developer have to have Column name of the .            * Values Can be Access on clien in this way. OBJ.HEAD[0].            * NOTE: One negative point. by this method user will not be able to call any cell by its index.            * *************************************************************************/            StringBuilder JsonString = new StringBuilder();            //Exception Handling                    if (dt != null && dt.Rows.Count > 0)            {                JsonString.Append("{ ");                JsonString.Append("/"Head/":[ ");                for (int i = 0; i < dt.Rows.Count; i++)                {                    JsonString.Append("{ ");                    for (int j = 0; j < dt.Columns.Count; j++)                    {                        if (j < dt.Columns.Count - 1)                        {                            JsonString.Append("/"" + dt.Columns[j].ColumnName.ToString() + "/":" + "/"" + dt.Rows[i][j].ToString() + "/",");                        }                        else if (j == dt.Columns.Count - 1)                        {                            JsonString.Append("/"" + dt.Columns[j].ColumnName.ToString() + "/":" + "/"" + dt.Rows[i][j].ToString() + "/"");                        }                    }                    /**/                    /*end Of String*/                    if (i == dt.Rows.Count - 1)                    {                        JsonString.Append("} ");                    }                    else                    {                        JsonString.Append("}, ");                    }                }                JsonString.Append("]}");                return JsonString.ToString();            }            else            {                return null;            }        }
原创粉丝点击