ToJson

 把我们常用的数据显示转化成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("’")来获取了,然后的呢我们的判断是否每一个数据的后面要有“,”了吧。这就的判断了。

 

基本思路我们都清楚了,那下面看看我们的代码怎么实现吧?......

View Code
  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 }

虽然不常用但是大部分我们能学到它的编程思想,好大用处的哦~

posted @ 2012-10-24 20:31  妍珊  阅读(570)  评论(0编辑  收藏  举报