JSON与DataTable(DataSet)相互转化

来源:互联网 发布:2016网络fps游戏排行榜 编辑:程序博客网 时间:2024/05/22 14:42

JSON与DataTable(DataSet)相互转化


DT->JSON 好用

[csharp] view plaincopy
  1. public static string CreateJsonParameters(DataTable dt)  
  2.       {  
  3.           /* /**************************************************************************** 
  4.            * Without goingin to the depth of the functioning of this Method, i will try to give an overview 
  5.            * As soon as this method gets a DataTable it starts to convert it into JSON String, 
  6.            * it takes each row and in each row it grabs the cell name and its data. 
  7.            * This kind of JSON is very usefull when developer have to have Column name of the . 
  8.            * Values Can be Access on clien in this way. OBJ.HEAD[0].<ColumnName> 
  9.            * NOTE: One negative point. by this method user will not be able to call any cell by its index. 
  10.            * *************************************************************************/  
  11.           StringBuilder JsonString = new StringBuilder();  
  12.           //Exception Handling          
  13.           if (dt != null && dt.Rows.Count > 0)  
  14.           {  
  15.               JsonString.Append("{ ");  
  16.               JsonString.Append("\"Head\":[ ");  
  17.               for (int i = 0; i < dt.Rows.Count; i++)  
  18.               {  
  19.                   JsonString.Append("{ ");  
  20.                   for (int j = 0; j < dt.Columns.Count; j++)  
  21.                   {  
  22.                       if (j < dt.Columns.Count - 1)  
  23.                       {  
  24.                           JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + dt.Rows[i][j].ToString() + "\",");  
  25.                       }  
  26.                       else if (j == dt.Columns.Count - 1)  
  27.                       {  
  28.                           JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + dt.Rows[i][j].ToString() + "\"");  
  29.                       }  
  30.                   }  
  31.                   /*end Of String*/  
  32.                   if (i == dt.Rows.Count - 1)  
  33.                   {  
  34.                       JsonString.Append("} ");  
  35.                   }  
  36.                   else  
  37.                   {  
  38.                       JsonString.Append("}, ");  
  39.                   }  
  40.               }  
  41.               JsonString.Append("]}");  
  42.               return JsonString.ToString();  
  43.           }  
  44.           else  
  45.           {  
  46.               return null;  
  47.           }  
  48.       }  


     



# region dataTable转换成Json格式
        /// <summary>     
        /// dataTable转换成Json格式     
        /// </summary>     
        /// <param name="dt"></param>     
        /// <returns></returns>     
        public static string ToJson(DataTable dt)
        {
            StringBuilder jsonBuilder = new StringBuilder();
            jsonBuilder.Append("{/"");
            jsonBuilder.Append(dt.TableName.ToString());
            jsonBuilder.Append("/":[");
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                jsonBuilder.Append("{");
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    jsonBuilder.Append("/"");
                    jsonBuilder.Append(dt.Columns[j].ColumnName);
                    jsonBuilder.Append("/":/"");
                    jsonBuilder.Append(dt.Rows[i][j].ToString());
                    jsonBuilder.Append("/",");
                }
                jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
                jsonBuilder.Append("},");
            }
            jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
            jsonBuilder.Append("]");
            jsonBuilder.Append("}");
            return jsonBuilder.ToString();
        }

        # endregion dataTable转换成Json格式

 

 

 

 

        # region DataSet转换成Json格式
        /// <summary>     
        /// DataSet转换成Json格式     
        /// </summary>     
        /// <param name="ds">DataSet</param>     
        /// <returns></returns>     
        public static string ToJson(DataSet ds)
        {
            StringBuilder json = new StringBuilder();

            foreach (DataTable dt in ds.Tables)
            {
                json.Append("{/"");
                json.Append(dt.TableName);
                json.Append("/":");
                json.Append(ToJson(dt));
                json.Append("}");
            }
            return json.ToString();
        }
        # endregion

 

 

 

 

 

 

 public static DataTable JsonToDataTable(string strJson)
        {
            //取出表名 
            Regex 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)
                    {
                        DataColumn dc = new DataColumn();
                        string[] strCell = str.Split(':');
                        dc.ColumnName = strCell[0].ToString();
                        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
原创粉丝点击