JSON格式互转集合

it2022-05-09  16

将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字符串数组集合互转

最新回复(0)