将JSON转换成DataTable、DataSet或是List等,也有可能将DataTable、DataSet或是List转换成JSON的
代码:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Text; 6 using System.Data; 7 using System.Data.Common; 8 using System.Collections; 9 using System.Reflection; 10 11 namespace BJYX.WEB.Public 12 { 13 public class Creat_Json 14 { 15 public Creat_Json() 16 { 17 // 18 // TODO: 在此处添加构造函数逻辑 19 // 20 } 21 /// <summary> /// 将json转换为DataTable /// </summary> /// <param name="strJson">得到的json</param> /// <returns></returns> 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; } 22 public static string DataTable2Json(System.Data.DataTable dt) 23 { 24 System.Text.StringBuilder jsonBuilder = new System.Text.StringBuilder(); 25 jsonBuilder.Append("{"); 26 jsonBuilder.AppendFormat("\"total\":{0}, ", dt.Rows.Count); 27 jsonBuilder.Append("\"rows\":[ "); 28 for (int i = 0; i < dt.Rows.Count; i++) 29 { 30 jsonBuilder.Append("{"); 31 for (int j = 0; j < dt.Columns.Count; j++) 32 { 33 jsonBuilder.Append("\""); 34 jsonBuilder.Append(dt.Columns[j].ColumnName); 35 jsonBuilder.Append("\":\""); 36 jsonBuilder.Append(dt.Rows[i][j].ToString().Replace("\\", "\\\\").Replace("'", "'").Replace("\t", " ").Replace("\r", " ").Replace("\n", "<br/>").Replace("\"", """)); 37 jsonBuilder.Append("\","); 38 } 39 jsonBuilder.Remove(jsonBuilder.Length - 1, 1); 40 jsonBuilder.Append("},"); 41 } 42 jsonBuilder.Remove(jsonBuilder.Length - 1, 1); 43 jsonBuilder.Append("]"); 44 jsonBuilder.Append("}"); 45 return jsonBuilder.ToString(); 46 } 47 public static string DataTable2Json(System.Data.DataTable dt, int count) 48 { 49 System.Text.StringBuilder jsonBuilder = new System.Text.StringBuilder(); 50 jsonBuilder.Append("{"); 51 jsonBuilder.AppendFormat("\"total\":{0}, ", count); 52 jsonBuilder.Append("\"rows\":[ "); 53 for (int i = 0; i < dt.Rows.Count; i++) 54 { 55 jsonBuilder.Append("{"); 56 for (int j = 0; j < dt.Columns.Count; j++) 57 { 58 jsonBuilder.Append("\""); 59 jsonBuilder.Append(dt.Columns[j].ColumnName); 60 jsonBuilder.Append("\":\""); 61 jsonBuilder.Append(dt.Rows[i][j].ToString().Replace("\\", "\\\\
转载于:https://www.cnblogs.com/nxxshxf/p/5227419.html
相关资源:jackson 对象json字符串数组集合互转