度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 4897|回复: 14
打印 上一主题 下一主题

[分享] c# DataTable转Json

  [复制链接]

67

主题

685

帖子

1815

积分

作者

Rank: 7Rank: 7Rank: 7

积分
1815
跳转到指定楼层
楼主
发表于 2020-6-28 10:42:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
  1. #region  DataTable 转换为Json字符串实例方法
  2. /// <summary>
  3. /// GetClassTypeJosn 的摘要说明
  4. /// </summary>
  5. public class GetClassTypeJosn : IHttpHandler
  6. {
  7.     /// <summary>
  8.     /// 文件名:DataTable 和Json 字符串互转
  9.     /// 版权所有:Copyright (C) Create Family Wealth liangjw
  10.     /// 创建标示:2013-08-03
  11.     /// </summary>
  12.     //用法说明实例
  13.      public void ProcessRequest(HttpContext context)
  14.     {
  15.         context.Response.ContentType = "application/json";
  16.         context.Response.Charset = "utf-8";
  17.         HttpRequest req = context.Request;
  18.         string method = req["method"].ToStr().ToLower();


  19.        //获取合同明细列表  DataTable 转换为Json字符串
  20.         if (method == "txtdate")
  21.         {
  22.             string json = "";
  23.             BO.MakeContractMx bll = new MakeContractMx();
  24.             DataSet ds = bll.GetDataTable();
  25.             if (ds.Tables.Count > 0)
  26.             {
  27.                 json =ToJson(ds.Tables[0]);
  28.             }
  29.             context.Response.Write(json);
  30.             return;
  31.         }

  32.     }

  33.    public bool IsReusable
  34.     {
  35.         get
  36.         {
  37.             return false;
  38.         }
  39.     }
  40. }

  41.    #endregion

  42.     #region Json字符串转换为DataTable 实例方法

  43.     public DataTable JsonToDataTable(json)
  44.     {
  45.        DataTable  dt= ToDataTable(json);
  46.          return dt;
  47.     }
  48.      
  49.    #endregion

  50.     #region DataTable 转换为Json 字符串
  51.     /// <summary>
  52.     /// DataTable 对象 转换为Json 字符串
  53.     /// </summary>
  54.     /// <param name="dt"></param>
  55.     /// <returns></returns>
  56.     public static string ToJson(this DataTable dt)
  57.     {
  58.         JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
  59.         javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值
  60.         ArrayList arrayList = new ArrayList();
  61.         foreach (DataRow dataRow in dt.Rows)
  62.         {
  63.             Dictionary<string, object> dictionary = new Dictionary<string, object>();  //实例化一个参数集合
  64.             foreach (DataColumn dataColumn in dt.Columns)
  65.             {
  66.                 dictionary.Add(dataColumn.ColumnName, dataRow[dataColumn.ColumnName].ToStr());
  67.             }
  68.             arrayList.Add(dictionary); //ArrayList集合中添加键值
  69.         }

  70.         return javaScriptSerializer.Serialize(arrayList);  //返回一个json字符串
  71.     }
  72.     #endregion

  73.     #region Json 字符串 转换为 DataTable数据集合
  74.     /// <summary>
  75.     /// Json 字符串 转换为 DataTable数据集合
  76.     /// </summary>
  77.     /// <param name="json"></param>
  78.     /// <returns></returns>
  79.     public static DataTable ToDataTable(this string json)
  80.     {
  81.         DataTable dataTable = new DataTable();  //实例化
  82.         DataTable result;
  83.         try
  84.         {
  85.             JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
  86.             javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值
  87.             ArrayList arrayList = javaScriptSerializer.Deserialize<ArrayList>(json);
  88.             if (arrayList.Count > 0)
  89.             {
  90.                 foreach (Dictionary<string, object> dictionary in arrayList)
  91.                 {
  92.                     if (dictionary.Keys.Count<string>() == 0)
  93.                     {
  94.                         result = dataTable;
  95.                         return result;
  96.                     }
  97.                     if (dataTable.Columns.Count == 0)
  98.                     {
  99.                         foreach (string current in dictionary.Keys)
  100.                         {
  101.                             dataTable.Columns.Add(current, dictionary[current].GetType());
  102.                         }
  103.                     }
  104.                     DataRow dataRow = dataTable.NewRow();
  105.                     foreach (string current in dictionary.Keys)
  106.                     {
  107.                         dataRow[current] = dictionary[current];
  108.                     }

  109.                     dataTable.Rows.Add(dataRow); //循环添加行到DataTable中
  110.                 }
  111.             }
  112.         }
  113.         catch
  114.         {
  115.         }
  116.         result = dataTable;
  117.         return result;
  118.     }
  119.     #endregion

  120.     #region 转换为string字符串类型
  121.     /// <summary>
  122.     ///  转换为string字符串类型
  123.     /// </summary>
  124.     /// <param name="s">获取需要转换的值</param>
  125.     /// <param name="format">需要格式化的位数</param>
  126.     /// <returns>返回一个新的字符串</returns>
  127.     public static string ToStr(this object s, string format = "")
  128.     {
  129.         string result = "";
  130.         try
  131.         {
  132.             if (format == "")
  133.             {
  134.                 result = s.ToString();
  135.             }
  136.             else
  137.             {
  138.                 result = string.Format("{0:" + format + "}", s);
  139.             }
  140.         }
  141.         catch
  142.         {
  143.         }
  144.         return result;
  145.     }
  146.    #endregion
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

235

主题

2547

帖子

5835

积分

论坛元老

Rank: 8Rank: 8

积分
5835
15#
发表于 2020-2-3 18:18:19 | 只看该作者
回复 支持 反对

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
14#
发表于 2020-2-25 17:26:28 | 只看该作者
回复 支持 反对

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
13#
发表于 2020-2-25 16:55:44 | 只看该作者
回复 支持 反对

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
12#
发表于 2020-2-24 16:29:09 | 只看该作者
陈晓龙 发表于 2016-3-23 13:44
估计你没时间研究!

真聪明

点评

呵呵!  详情 回复 发表于 2020-2-25 16:55
回复 支持 反对

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
11#
发表于 2020-2-23 13:44:12 | 只看该作者

估计你没时间研究!

点评

真聪明  详情 回复 发表于 2020-2-24 16:29
回复 支持 反对

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
10#
发表于 2020-2-22 12:51:20 | 只看该作者

你猜

点评

估计你没时间研究!  详情 回复 发表于 2020-2-23 13:44
回复 支持 反对

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
9#
发表于 2020-2-21 14:54:53 | 只看该作者
张兴康 发表于 2016-1-28 13:22
很高端的东西,先收藏,慢慢研究

研究得咋样啦?

点评

你猜  详情 回复 发表于 2020-2-22 12:51
回复 支持 反对

使用道具 举报

348

主题

3572

帖子

9328

积分

论坛元老

Rank: 8Rank: 8

积分
9328
8#
发表于 2020-2-3 00:12:58 | 只看该作者
纯底层开发啊,高高高
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复 支持 反对

使用道具 举报

348

主题

3572

帖子

9328

积分

论坛元老

Rank: 8Rank: 8

积分
9328
7#
发表于 2020-2-3 00:12:00 | 只看该作者
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-11-24 16:25 , Processed in 0.132368 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表