把我们常用的数据显示转化成JSon的形式,形成键值对,不过可能大家不会常用。。
请把DataTable里面的数据转换为JSON格式
姓名 性别 年龄 住址
张三 1 23 北京
李四 0 56 上海
。。。
1,
[{'name':'张三','sex':1,'age':23,'address':'北京'},{'name':'张三','sex':1,'age':23,'address':'北京'}]
2,请把上述上方扩展到DataTable中
string json = dt.ToJson();
如图:
首先我们的先拿到DataTable, 那怎么转换呢,我们的用到 StringBuilder来拼接,然后就是每一个数据的"[ ]"和每一个属性的"{ }",另外还要有",",首先先注意:每一个数组的最后一个}后没有",",每一个数据的最后属性没有","。那我们就得判断了。首先我们的先拿到每一行,怎么拿呢?这得需要一个循环吧?由于数据都有{ },所以我们的通过append("{"),append("}")来获取,然后中间呢其实就是一个键值对了吧,那键值对怎么拿到呢,还得需要一个循环吧?来拿到类,由于数据的值是"' " 引起来的,append("‘ "),append("’")来获取了,然后的呢我们的判断是否每一个数据的后面要有“,”了吧。这就的判断了。
基本思路我们都清楚了,那下面看看我们的代码怎么实现吧?......
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Data; 6 using System.Data.SqlClient; 7 using Com.HS.DBHelper; 8 using DataTableExtendMethod; 9 10 namespace DataTableExtendMethod 11 { 12 class DataTableExtendMethod 13 { 14 static void Main(string[] args) 15 { 16 //获取链接字符串,拿到DataTable 17 string strcon = "server=.;database=blog;uid=sa;pwd=1"; 18 SqlHelper helper = new SqlHelper(strcon); 19 DataTable dt =helper.ExecuteDataTable("select * from employee"); 20 //调用扩展方法ToJsonString(),事项转换格式 21 Console.WriteLine(dt.ToJsonString()); 22 } 23 那么我们用到for循环就不用考虑定义i 和j了吧。 24 public void Test2() 25 { 26 string strcon = "server=.;database=blog;uid=sa;pwd=1"; 27 SqlHelper helper = new SqlHelper(strcon); 28 DataTable dt = helper.ExecuteDataTable("select * from employee"); 29 StringBuilder sb = new StringBuilder(); 30 sb.Append("["); 31 //拿到行 32 for (int i = 0; i < dt.Rows.Count; i++) 33 { 34 sb.Append("{"); 35 //拿到列 36 for (int j = 0; j < dt.Columns.Count; j++) 37 { 38 sb.Append("'"); 39 sb.Append(dt.Columns[j].ColumnName); 40 sb.Append("':"); 41 sb.Append("'"); 42 sb.Append(dt.Rows[i][dt.Columns[j].ColumnName]); 43 if (j < dt.Columns.Count - 1) 44 { 45 sb.Append("',"); 46 } 47 else 48 { 49 sb.Append("'"); 50 } 51 } 52 if (i < dt.Rows.Count - 1) 53 { 54 sb.Append("},"); 55 } 56 else 57 { 58 sb.Append("}"); 59 } 60 } 61 sb.Append("]"); 62 Console.WriteLine(sb.ToString()); 63 } 64 我们先用foreach循环吧: 65 public void Test() 66 { 67 string strcon = "server=.;database=blog;uid=sa;pwd=1"; 68 SqlHelper helper = new SqlHelper(strcon); 69 DataTable dt = helper.ExecuteDataTable("select * from employee"); 70 StringBuilder sb = new StringBuilder(); 71 sb.Append("["); 72 int i = 0; 73 foreach (DataRow row in dt.Rows) 74 { 75 i++; 76 sb.Append("{"); 77 int j = 0; 78 foreach (DataColumn column in dt.Columns) 79 { 80 j++; 81 sb.Append("'"); 82 sb.Append(column.ColumnName); 83 sb.Append("':"); 84 sb.Append("'"); 85 sb.Append(row[column.ColumnName]); 86 //判断是否要有, 87 if (j < dt.Columns.Count) 88 { 89 sb.Append("',"); 90 } 91 else 92 { 93 sb.Append("'"); 94 } 95 } 96 if (i < dt.Rows.Count) 97 { 98 sb.Append("},"); 99 } 100 else 101 { 102 sb.Append("}"); 103 } 104 105 } 106 sb.Append("]"); 107 Console.WriteLine(sb.ToString()); 108 } 109 } 110 }
虽然不常用但是大部分我们能学到它的编程思想,好大用处的哦~