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();

如图:

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 }

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

你可能感兴趣的:(json)