zoukankan      html  css  js  c++  java
  • DataTable转换成Json格式

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.Write(DataTableToJson(MyTable()));
                Console.Read();
            }
    
             //"{\"totalpage\":\"10\",\"data\":[\"pic1\",\"pic2\",\"pic\"]}"
             // {totalpage:10,data:[pic1,pic2,pic]}
            public static string DataTableToJson(DataTable dt)
            {
                string columnFirst = "";
                List<string> result=new List<string>();
                StringBuilder Json = new StringBuilder();
                if (dt.Rows.Count > 0)
                {
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        if (columnFirst != dt.Rows[i][0].ToString())
                        {
                            if (i != 0)
                            {
                                AddNewJson(Json, result, dt);
                            }
                            columnFirst = dt.Rows[i][0].ToString();
                            result = new List<string>();
                            for (int k = 0; k < dt.Columns.Count; k++)
                            {
                                result.Add("\"" + dt.Rows[i][k].ToString() + "\"");
                            }
                        }
                        else
                        {
                            for (int k = 0; k < dt.Columns.Count; k++)
                            {
                                if (!result[k].Contains(dt.Rows[i][k].ToString()))
                                {
                                    result[k] += ",\"" + dt.Rows[i][k].ToString()+"\"";
                                }
                            }
                        }
                        if (i == dt.Rows.Count - 1)
                        {
                            AddNewJson(Json, result, dt);
                        }
                    }
                }
                return Json.ToString();
            }
    
            private static void AddNewJson(StringBuilder Json,List<string> result,DataTable dt)
            {
                Json.Append("{");
                for (int i = 0; i < dt.Columns.Count;i++ )
                {
                    Json.Append("\"");
                    Json.Append(dt.Columns[i].ColumnName);
                    Json.Append("\":");
                    if (result[i].Contains(","))
                    {
                        Json.Append("[");
                        Json.Append(result[i]);
                        if (i == dt.Columns.Count - 1)
                        {
                            Json.Append("]");
                        }
                        else
                        {
                            Json.Append("],");
                        }
                    }
                    else
                    {
                        Json.Append(result[i]);
                        if (i != dt.Columns.Count - 1)
                        {
                            Json.Append(",");
                        }
                    }
                }
                Json.Append("}");
            }
    
            private static DataTable MyTable()
            {
                DataTable dt = new DataTable();
                DataColumn dc = new DataColumn();
                dc.ColumnName = "ID";
                dc.DataType = typeof(String);
                dt.Columns.Add(dc);
                dc = new DataColumn();
                dc.ColumnName = "Name";
                dc.DataType = typeof(String);
                dt.Columns.Add(dc);
                dc = new DataColumn();
                dc.ColumnName = "Score";
                dc.DataType = typeof(String);
                dt.Columns.Add(dc);
                DataRow dr = dt.NewRow();
                dr["ID"] = "01";
                dr["Name"] = "Jin";
                dr["Score"] = "10";
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr["ID"] = "01";
                dr["Name"] = "Xin";
                dr["Score"] = "20";
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr["ID"] = "01";
                dr["Name"] = "Xu";
                dr["Score"] = "30";
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr["ID"] = "02";
                dr["Name"] = "Xin";
                dr["Score"] = "30";
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr["ID"] = "02";
                dr["Name"] = "Jin";
                dr["Score"] = "30";
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr["ID"] = "02";
                dr["Name"] = "Jin";
                dr["Score"] = "30";
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr["ID"] = "02";
                dr["Name"] = "Jin";
                dr["Score"] = "40";
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr["ID"] = "02";
                dr["Name"] = "Jin";
                dr["Score"] = "30";
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr["ID"] = "02";
                dr["Name"] = "Jin";
                dr["Score"] = "30";
                dt.Rows.Add(dr);
                return dt;
            }
        }
    }
    

     显示结果

  • 相关阅读:
    PHP文件打开、关闭、写入的判断与执行
    统计文件大小,以GB、MB、KB、B输出
    超强功能file_put_contents()函数(集成了fopen、fwrite、fclose)
    fputcsv命令,写csv文件,遇到的小问题(多维数组连接符)
    Rename 更改文件、文件夹名称
    PHP学习——定界符格式引起的错误
    SPOJ 1873 Accumulate Cargo
    POJ 3657 Haybale Guessing
    HDU 1512 Monkey King
    POJ 1741 Tree
  • 原文地址:https://www.cnblogs.com/jin256/p/2258644.html
Copyright © 2011-2022 走看看