zoukankan      html  css  js  c++  java
  • 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 }

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

  • 相关阅读:
    Android基础学习之context
    [原]C语言实现的快速排序,采用分治策略,递归实现
    [原]动态获取应用的视图实际大小
    [原]此程序专用来说明C++模板的用法
    [原]C++程序示例:涉及到抽象类、继承…
    [原]C++关于运算符重载的程序报错error…
    [原]用C#模拟实现扑克牌发牌、排序程序…
    [原]用C#模拟实现扑克牌发牌、排序程序。
    Come on , Android 常用开发工具
    ADB 常用命令
  • 原文地址:https://www.cnblogs.com/QLJ1314/p/2737743.html
Copyright © 2011-2022 走看看