c#常用的Datable转换为json,以及json转换为DataTable操作方法

/*==============================================================================
*
* Filename: DatatableToJson.cs
* Description: 主要包含两个方法:
   1. 获取的DataTable 对象 转换为Json 字符串
   2. Json 字符串 转换为 DataTable数据集合
* Version: 1.0
* Created: 2012.08.23
* Author: liangjw
* E-mail : liangjw0504@163.com
* Q   Q   : 592568532
* Company: Copyright (C) Create Family Wealth Power By Peter
*
==============================================================================*/
 * 备注信息: 上传部分自己总结的常用方法的封装,有不足和不完美之处,希望大家指出来,愿意一起
 * 主要研究erp,cms,crm,b2b,oa等系统和网站的开发,欢迎有共同追求和学的IT人员一起学习和交流。
 * 学习和讨论有关asp.net  mvc ,Ajax ,jquery ,html/css, xml ,sqlserver ,wpf,IIS以及服务器的搭建和安全性相关技术的交流和学习。
标签: <无>

代码片段(1)[全屏查看所有代码]

1. [代码][C#]Datatable和json互相转换操作     跳至 [1] [全屏预览]

001 #region  DataTable 转换为Json字符串实例方法
002 /// <summary>
003 /// GetClassTypeJosn 的摘要说明
004 /// </summary>
005 public class GetClassTypeJosn : IHttpHandler
006 {
007     /// <summary>
008     /// 文件名:DataTable 和Json 字符串互转
009     /// 版权所有:Copyright (C) Create Family Wealth liangjw
010     /// 创建标示:2013-08-03
011     /// </summary>
012     //用法说明实例
013      public void ProcessRequest(HttpContext context)
014     {
015         context.Response.ContentType = "application/json";
016         context.Response.Charset = "utf-8";
017         HttpRequest req = context.Request;
018         string method = req["method"].ToStr().ToLower();
019  
020  
021        //获取合同明细列表  DataTable 转换为Json字符串
022         if (method == "txtdate")
023         {
024             string json = "";
025             BO.MakeContractMx bll = new MakeContractMx();
026             DataSet ds = bll.GetDataTable();
027             if (ds.Tables.Count > 0)
028             {
029                 json =ToJson(ds.Tables[0]);
030             }
031             context.Response.Write(json);
032             return;
033         }
034  
035     }
036  
037    public bool IsReusable
038     {
039         get
040         {
041             return false;
042         }
043     }
044 }
045  
046    #endregion
047  
048     #region Json字符串转换为DataTable 实例方法
049  
050     public DataTable JsonToDataTable(json)
051     {
052        DataTable  dt= ToDataTable(json);
053          return dt;
054     }
055      
056    #endregion
057  
058     #region DataTable 转换为Json 字符串
059     /// <summary>
060     /// DataTable 对象 转换为Json 字符串
061     /// </summary>
062     /// <param name="dt"></param>
063     /// <returns></returns>
064     public static string ToJson(this DataTable dt)
065     {
066         JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
067         javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值
068         ArrayList arrayList = new ArrayList();
069         foreach (DataRow dataRow in dt.Rows)
070         {
071             Dictionary<stringobject> dictionary = new Dictionary<stringobject>(); //实例化一个参数集合
072             foreach (DataColumn dataColumn in dt.Columns)
073             {
074                 dictionary.Add(dataColumn.ColumnName, dataRow[dataColumn.ColumnName].ToStr());
075             }
076             arrayList.Add(dictionary); //ArrayList集合中添加键值
077         }
078  
079         return javaScriptSerializer.Serialize(arrayList);  //返回一个json字符串
080     }
081     #endregion
082  
083     #region Json 字符串 转换为 DataTable数据集合
084     /// <summary>
085     /// Json 字符串 转换为 DataTable数据集合
086     /// </summary>
087     /// <param name="json"></param>
088     /// <returns></returns>
089     public static DataTable ToDataTable(this string json)
090     {
091         DataTable dataTable = new DataTable();  //实例化
092         DataTable result;
093         try
094         {
095             JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
096             javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值
097             ArrayList arrayList = javaScriptSerializer.Deserialize<ArrayList>(json);
098             if (arrayList.Count > 0)
099             {
100                 foreach (Dictionary<stringobject> dictionary in arrayList)
101                 {
102                     if (dictionary.Keys.Count<string>() == 0)
103                     {
104                         result = dataTable;
105                         return result;
106                     }
107                     if (dataTable.Columns.Count == 0)
108                     {
109                         foreach (string current in dictionary.Keys)
110                         {
111                             dataTable.Columns.Add(current, dictionary[current].GetType());
112                         }
113                     }
114                     DataRow dataRow = dataTable.NewRow();
115                     foreach (string current in dictionary.Keys)
116                     {
117                         dataRow[current] = dictionary[current];
118                     }
119  
120                     dataTable.Rows.Add(dataRow); //循环添加行到DataTable中
121                 }
122             }
123         }
124         catch
125         {
126         }
127         result = dataTable;
128         return result;
129     }
130     #endregion
131  
132     #region 转换为string字符串类型
133     /// <summary>
134     ///  转换为string字符串类型
135     /// </summary>
136     /// <param name="s">获取需要转换的值</param>
137     /// <param name="format">需要格式化的位数</param>
138     /// <returns>返回一个新的字符串</returns>
139     public static string ToStr(this object s, string format = "")
140     {
141         string result = "";
142         try
143         {
144             if (format == "")
145             {
146                 result = s.ToString();
147             }
148             else
149             {
150                 result = string.Format("{0:" + format + "}", s);
151             }
152         }
153         catch
154         {
155         }
156         return result;
157     }
158    #endregion
/*==============================================================================
*
* Filename: DatatableToJson.cs
* Description: 主要包含两个方法:
   1. 获取的DataTable 对象 转换为Json 字符串
   2. Json 字符串 转换为 DataTable数据集合
* Version: 1.0
* Created: 2012.08.23
* Author: liangjw
* E-mail : liangjw0504@163.com
* Q   Q   : 592568532
* Company: Copyright (C) Create Family Wealth Power By Peter
*
==============================================================================*/
 * 备注信息: 上传部分自己总结的常用方法的封装,有不足和不完美之处,希望大家指出来,愿意一起
 * 主要研究erp,cms,crm,b2b,oa等系统和网站的开发,欢迎有共同追求和学的IT人员一起学习和交流。
 * 学习和讨论有关asp.net  mvc ,Ajax ,jquery ,html/css, xml ,sqlserver ,wpf,IIS以及服务器的搭建和安全性相关技术的交流和学习。
标签: <无>

代码片段(1)[全屏查看所有代码]

1. [代码][C#]Datatable和json互相转换操作     跳至 [1] [全屏预览]

001 #region  DataTable 转换为Json字符串实例方法
002 /// <summary>
003 /// GetClassTypeJosn 的摘要说明
004 /// </summary>
005 public class GetClassTypeJosn : IHttpHandler
006 {
007     /// <summary>
008     /// 文件名:DataTable 和Json 字符串互转
009     /// 版权所有:Copyright (C) Create Family Wealth liangjw
010     /// 创建标示:2013-08-03
011     /// </summary>
012     //用法说明实例
013      public void ProcessRequest(HttpContext context)
014     {
015         context.Response.ContentType = "application/json";
016         context.Response.Charset = "utf-8";
017         HttpRequest req = context.Request;
018         string method = req["method"].ToStr().ToLower();
019  
020  
021        //获取合同明细列表  DataTable 转换为Json字符串
022         if (method == "txtdate")
023         {
024             string json = "";
025             BO.MakeContractMx bll = new MakeContractMx();
026             DataSet ds = bll.GetDataTable();
027             if (ds.Tables.Count > 0)
028             {
029                 json =ToJson(ds.Tables[0]);
030             }
031             context.Response.Write(json);
032             return;
033         }
034  
035     }
036  
037    public bool IsReusable
038     {
039         get
040         {
041             return false;
042         }
043     }
044 }
045  
046    #endregion
047  
048     #region Json字符串转换为DataTable 实例方法
049  
050     public DataTable JsonToDataTable(json)
051     {
052        DataTable  dt= ToDataTable(json);
053          return dt;
054     }
055      
056    #endregion
057  
058     #region DataTable 转换为Json 字符串
059     /// <summary>
060     /// DataTable 对象 转换为Json 字符串
061     /// </summary>
062     /// <param name="dt"></param>
063     /// <returns></returns>
064     public static string ToJson(this DataTable dt)
065     {
066         JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
067         javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值
068         ArrayList arrayList = new ArrayList();
069         foreach (DataRow dataRow in dt.Rows)
070         {
071             Dictionary<stringobject> dictionary = new Dictionary<stringobject>(); //实例化一个参数集合
072             foreach (DataColumn dataColumn in dt.Columns)
073             {
074                 dictionary.Add(dataColumn.ColumnName, dataRow[dataColumn.ColumnName].ToStr());
075             }
076             arrayList.Add(dictionary); //ArrayList集合中添加键值
077         }
078  
079         return javaScriptSerializer.Serialize(arrayList);  //返回一个json字符串
080     }
081     #endregion
082  
083     #region Json 字符串 转换为 DataTable数据集合
084     /// <summary>
085     /// Json 字符串 转换为 DataTable数据集合
086     /// </summary>
087     /// <param name="json"></param>
088     /// <returns></returns>
089     public static DataTable ToDataTable(this string json)
090     {
091         DataTable dataTable = new DataTable();  //实例化
092         DataTable result;
093         try
094         {
095             JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
096             javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值
097             ArrayList arrayList = javaScriptSerializer.Deserialize<ArrayList>(json);
098             if (arrayList.Count > 0)
099             {
100                 foreach (Dictionary<stringobject> dictionary in arrayList)
101                 {
102                     if (dictionary.Keys.Count<string>() == 0)
103                     {
104                         result = dataTable;
105                         return result;
106                     }
107                     if (dataTable.Columns.Count == 0)
108                     {
109                         foreach (string current in dictionary.Keys)
110                         {
111                             dataTable.Columns.Add(current, dictionary[current].GetType());
112                         }
113                     }
114                     DataRow dataRow = dataTable.NewRow();
115                     foreach (string current in dictionary.Keys)
116                     {
117                         dataRow[current] = dictionary[current];
118                     }
119  
120                     dataTable.Rows.Add(dataRow); //循环添加行到DataTable中
121                 }
122             }
123         }
124         catch
125         {
126         }
127         result = dataTable;
128         return result;
129     }
130     #endregion
131  
132     #region 转换为string字符串类型
133     /// <summary>
134     ///  转换为string字符串类型
135     /// </summary>
136     /// <param name="s">获取需要转换的值</param>
137     /// <param name="format">需要格式化的位数</param>
138     /// <returns>返回一个新的字符串</returns>
139     public static string ToStr(this object s, string format = "")
140     {
141         string result = "";
142         try
143         {
144             if (format == "")
145             {
146                 result = s.ToString();
147             }
148             else
149             {
150                 result = string.Format("{0:" + format + "}", s);
151             }
152         }
153         catch
154         {
155         }
156         return result;
157     }
158    #endregion
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 可以使用Json.NET库将C#JSON字符串转换DataTable。 具体步骤如下: 1. 引入Json.NET库,可以通过NuGet包管理器进行安装。 2. 使用JsonConvert.DeserializeObject方法将JSON字符串转换为JArray对象。 3. 创建DataTable对象,并添加列。 4. 遍历JArray对象,将每个JSON对象转换DataRow,并添加到DataTable。 示例代码如下: ``` using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System.Data; string json = "{'data':[{'id':1,'name':'John'},{'id':2,'name':'Mary'}]}"; JObject obj = JObject.Parse(json); JArray array = (JArray)obj["data"]; DataTable dt = new DataTable(); dt.Columns.Add("id", typeof(int)); dt.Columns.Add("name", typeof(string)); foreach (JObject item in array) { DataRow row = dt.NewRow(); row["id"] = item["id"].Value<int>(); row["name"] = item["name"].Value<string>(); dt.Rows.Add(row); } ``` 以上代码将JSON字符串data数组转换DataTable对象,包含id和name两列。 ### 回答2: 很抱歉,因为没有上下文信息,无法理解“c”所代表的问题或主题,无法提供符合要求的回答。建议提出问题时应尽量清晰明确,以便回答者提供有效的回答。 ### 回答3: C是计算机科学和技术的重要编程语言之一,也被广泛应用于其它领域,如数学、统计、金融、科学等。C语言因其跨平台性、高效性和灵活性而备受青睐,成为初学者和专业开发者的首选编程语言。 C语言的优点之一是跨平台性。C语言是一种跨平台的编程语言,可以在不同的操作系统和计算机架构下运行。这使得开发者能够轻松跨越多个平台,减少了开发的难度和复杂性。 C语言的另一个优点是高效性。C语言是一种快速、高效的编程语言,由于其底层语言特征,C语言可以直接操作计算机的硬件资源,如内存、处理器、输入输出设备等。这使得C语言可以编写高效性能的程序,特别适合开发那些对性能要求较高的应用程序。 C语言还具有灵活性。C语言支持指针和动态内存分配等高级特性,这些特性使得程序员可以更容易地在C语言程序管理内存和实现复杂的数据结构。此外,C语言还可以轻松地与其他语言进行集成,如C++,Python等,以扩展其功能和灵活性。 总之,C语言是一种非常有用的编程语言,它拥有跨平台性、高效性和灵活性等一系列优点,特别适合于开发高性能、低级别的系统程序。即使在现代编程语言如Python、Java、Swift等的时代,C语言仍然被广泛应用于计算机科学和技术领域,并且仍然是开发者的首选编程语言之一。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值