datatable 和 json 互相转化
来源:互联网 发布:vue.js属于技术架构么 编辑:程序博客网 时间:2024/05/20 18:44
我在最近的开发中经常要用到吧Json转化成DataTable,上网查了一些资料,在加上自己的一些修改
感谢那些无偿分享的同学,希望能把这种精神发扬下去
下面贴出我写的代码
1.把datatable转化成json,并且可以在后面追加一些其他json
#region 1.DataTable转成Json 返回数据表对应的JSON {jsonName:[......]} /// <summary> /// DataTable转成Json 返回数据表对应的JSON {jsonName:[......]} /// 例子: CommonFunction.DataTableToJson("GPSHistoryList", dt, "\"relust\":\"true\",\"msg\":\"获取车辆信息成功\""); /// </summary> /// <param name="jsonName">json名称</param> /// <param name="dt">数据表</param> /// <param name="otherJson">除了table外的其他json,例: "\"relust\":\"true\",\"msg\":\"获取车辆信息成功\""</param> /// <returns>数据表对应的JSON {jsonName:[......]}</returns> public static string DataTableToJson(string jsonName, DataTable dt,string otherJson="") { StringBuilder Json = new StringBuilder(); Json.Append("{\"" + jsonName + "\":["); if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { Json.Append("{"); for (int j = 0; j < dt.Columns.Count; j++) { Json.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":\"" + dt.Rows[i][j].ToString() + "\""); if (j < dt.Columns.Count - 1) { Json.Append(","); } } Json.Append("}"); if (i < dt.Rows.Count - 1) { Json.Append(","); } } } if (otherJson != "") { Json.Append("]," + otherJson + "}"); } else { Json.Append("]}"); } return Json.ToString(); } #endregion
2,多个datatable转化成json,有时候可能不止一个datatable要转化成json,所以我修改了一下1,改成可以转化多个datatable
#region 2.多个DataTable转成Json 返回数据表对应的JSON {jsonName:[......]} /// <summary> /// DataTable转成Json 返回数据表对应的JSON {jsonName:[......]} /// 例子: CommonFunction.DataTableToJson("GPSHistoryList", dt, "\"relust\":\"true\",\"msg\":\"获取车辆信息成功\""); /// </summary> /// <param name="jsonName">json名称</param> /// <param name="dt">数据表</param> /// <returns>数据表对应的JSON {jsonName:[......]}</returns> public static string DataTableListToJson(string[] jsonName, DataTable[] dts, string otherJson = "") { StringBuilder Json = new StringBuilder(); Json.Append("{"); for (int jt = 0; jt < dts.Length; jt++) { var dt = dts[jt]; Json.Append("\""+jsonName[jt] + "\":["); if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { Json.Append("{"); for (int j = 0; j < dt.Columns.Count; j++) { Json.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":\"" + dt.Rows[i][j].ToString() + "\""); if (j < dt.Columns.Count - 1) { Json.Append(","); } } Json.Append("}"); if (i < dt.Rows.Count - 1) { Json.Append(","); } } } if (jt < dts.Length - 1) { Json.Append("],"); } } if (otherJson != "") { Json.Append("]," + otherJson + "}"); } else { Json.Append("]}"); } return Json.ToString(); } #endregion
datatable转化成json基本上有上面两个应该够用了
接下来就需要把json转化成datatable,如果要测试,可以通过1方法把table转化成json,在调用这个方法,转化后的datable表名是1方法中的jsonName
注意,这个方法只能转1方法转化后的那种格式的json
#region 3.根据Json返回DateTable /// <summary> /// 根据Json返回DateTable,JSON数据格式如: /// {table:[{column1:1,column2:2,column3:3},{column1:1,column2:2,column3:3}]} /// </summary> /// <param name="strJson">Json字符串</param> /// <returns></returns> public static DataTable JsonToDataTable(string strJson) { //取出表名 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(':'); 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; } #endregion
0 0
- datatable 和 json 互相转化
- DataTable和Xml互相转化
- [C#]Datatable和json互相转换操作
- json DataTable互相转换
- js字符串和json格式互相转化
- 字符串和JSON对象的互相转化
- Python 字符串,字典,数据库,列表和json互相转化
- 利用浏览器,js代码,json和字符串互相转化
- DataTable与Json相互转化
- 接口json转化为datatable
- json字符串与json对象互相转化
- 解析json将json转化为DataTable
- JSON之前台String和JSON对象的互相转化-yellowcong
- Jackson学习对象与JSON互相转化
- java中string与json互相转化
- js 把xml与json互相转化
- java中string与json互相转化
- java中string与json互相转化
- 关于系统之间的动画跳转
- java项目jar包导入
- jenkins避免在控制台输出密码
- Spark与Hadoop计算模型的比较分析
- Oracle not exists的等价写法
- datatable 和 json 互相转化
- 为什么1GB内存的苹果能完爆3GB内存的安卓机
- 10分钟掌握XML、JSON及其解析
- 上海产品运营招聘面试技巧分析
- hduoj1025(LIS优化版)
- UVa 673 - Parentheses Balance
- 证明哈夫曼编码是最优的
- DECOLOR目标检测及背景估计算法
- 神经网络学习笔记(五):感知机