Json转换成DataTable

   今天看到Json转DataTable的例子,总结一下。。。。

 1 using System;
 2 using System.Collections;
 3 using System.Collections.Generic;
 4 using System.Data;
 5 using System.IO;
 6 using System.Linq;
 7 using System.Text;
 8 using System.Threading.Tasks;
 9 using System.Web;
10 using System.Web.Script.Serialization;
11 namespace Json转DT_List
12 {
13 
14     class Program
15     {
16         static void Main(string[] args)
17         {
18             StreamReader sr = new StreamReader(@"F:\vs2015Test\VS2015学习\Json转DT,List\json1.json", Encoding.Default);
19             var jsonStr = sr.ReadToEnd();
20             var Dt = JsonToDatatable("");
21             var str = DataTableToJson(new DataTable());
22             Console.WriteLine(str);
23 
24             Console.ReadKey();
25         }
26 
27         public static DataTable JsonToDatatable(string json)
28         {
29             DataTable datatable = null;
30             if (!string.IsNullOrEmpty(json))
31             {
32                 JavaScriptSerializer jss = new JavaScriptSerializer();
33                 ArrayList list = jss.Deserialize<ArrayList>(json);//将指定的 JSON 字符串转换为 T 类型的对象,可以是自己的List对象
34                 datatable = new DataTable();
35                 if (list.Count > 0)
36                 {
37                     foreach (Dictionary<string, object> ll in list)//定义一个.Dictionary盛放list中的对象
38                     {
39                         if (datatable.Columns.Count == 0)
40                         {
41                             foreach (var key in ll.Keys)
42                                 datatable.Columns.Add(key, ll[key].GetType());   //添加新列                              
43                         }
44                         var newRow = datatable.NewRow();
45                         foreach (var k in ll.Keys)
46                         {
47                             newRow[k] = ll[k];//给行上的列赋值
48                         }
49                         datatable.Rows.Add(newRow);
50                     }
51                 }
52             }
53             return datatable;
54         }
55 
56         public static string DataTableToJson(DataTable dt)
57         {
58             var jsonStr = "";
59             if (dt != null)
60             {
61                 ArrayList arrlist = new ArrayList();
62                 JavaScriptSerializer jss = new JavaScriptSerializer();
63                 foreach (DataRow row in dt.Rows)//遍历DataTable的Rows要是用DataRow
64                 {
65                     Dictionary<string, object> dicDrow = new Dictionary<string, object>();
66                     foreach (DataColumn c in dt.Columns)//遍历DataTable的Columns要使用DataColumn
67                         dicDrow.Add(c.ColumnName, row[c.ColumnName]);
68                     arrlist.Add(dicDrow);
69                 }
70                 jsonStr = jss.Serialize(arrlist);
71             }
72             return jsonStr;
73         }
74     }
75 }

 

 

该方法只能转换JSON数组格式的字符串,JSON对象格式只能转换成对象。。。。。

附带json1.json格式

[
  {
    "CFTUin": "769839263",
    "CancelDeadline": "2013-09-12 23:00:00",
    "CheckInDate": "2013-09-12 00:00:00",
    "CheckOutDate": "2013-09-13 00:00:00",
    "CityID": "0101",
    "CurrencyCode": "RMB",
    "HotelID": "00301105",
    "HotelName": "乐家连锁(北京天坛南门店)(原速8酒店(北京天坛南门店)",
    "ListID": "1000000005201308280002999652",
    "PayAmt": "228",
    "PayType": "0",
    "RommsCnt": "1",
    "SPTransID": "65202157",
    "State": "4"
  },
  {
    "CFTUin": "248486133",
    "CancelDeadline": "2013-10-13 23:00:00",
    "CheckInDate": "2013-10-13 00:00:00",
    "CheckOutDate": "2013-10-18 00:00:00",
    "CityID": "0201",
    "CurrencyCode": "RMB",
    "HotelID": "10201314",
    "HotelName": "上海凯顿酒店",
    "ListID": "1000000005201308280002999413",
    "PayAmt": "1140",
    "PayType": "0",
    "RommsCnt": "1",
    "SPTransID": "65197226",
    "State": "4"
  }
]

 

转载于:https://www.cnblogs.com/huage-1234/p/7306527.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答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语言仍然被广泛应用于计算机科学和技术领域,并且仍然是开发者的首选编程语言之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值