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

 using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.Script.Serialization;
namespace Json转DT_List
{ class Program
{
static void Main(string[] args)
{
StreamReader sr = new StreamReader(@"F:\vs2015Test\VS2015学习\Json转DT,List\json1.json", Encoding.Default);
var jsonStr = sr.ReadToEnd();
var Dt = JsonToDatatable("");
var str = DataTableToJson(new DataTable());
Console.WriteLine(str); Console.ReadKey();
} public static DataTable JsonToDatatable(string json)
{
DataTable datatable = null;
if (!string.IsNullOrEmpty(json))
{
JavaScriptSerializer jss = new JavaScriptSerializer();
ArrayList list = jss.Deserialize<ArrayList>(json);//将指定的 JSON 字符串转换为 T 类型的对象,可以是自己的List对象
datatable = new DataTable();
if (list.Count > )
{
foreach (Dictionary<string, object> ll in list)//定义一个.Dictionary盛放list中的对象
{
if (datatable.Columns.Count == )
{
foreach (var key in ll.Keys)
datatable.Columns.Add(key, ll[key].GetType()); //添加新列
}
var newRow = datatable.NewRow();
foreach (var k in ll.Keys)
{
newRow[k] = ll[k];//给行上的列赋值
}
datatable.Rows.Add(newRow);
}
}
}
return datatable;
} public static string DataTableToJson(DataTable dt)
{
var jsonStr = "";
if (dt != null)
{
ArrayList arrlist = new ArrayList();
JavaScriptSerializer jss = new JavaScriptSerializer();
foreach (DataRow row in dt.Rows)//遍历DataTable的Rows要是用DataRow
{
Dictionary<string, object> dicDrow = new Dictionary<string, object>();
foreach (DataColumn c in dt.Columns)//遍历DataTable的Columns要使用DataColumn
dicDrow.Add(c.ColumnName, row[c.ColumnName]);
arrlist.Add(dicDrow);
}
jsonStr = jss.Serialize(arrlist);
}
return jsonStr;
}
}
}

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

附带json1.json格式

[
{
"CFTUin": "",
"CancelDeadline": "2013-09-12 23:00:00",
"CheckInDate": "2013-09-12 00:00:00",
"CheckOutDate": "2013-09-13 00:00:00",
"CityID": "",
"CurrencyCode": "RMB",
"HotelID": "",
"HotelName": "乐家连锁(北京天坛南门店)(原速8酒店(北京天坛南门店)",
"ListID": "",
"PayAmt": "",
"PayType": "",
"RommsCnt": "",
"SPTransID": "",
"State": ""
},
{
"CFTUin": "",
"CancelDeadline": "2013-10-13 23:00:00",
"CheckInDate": "2013-10-13 00:00:00",
"CheckOutDate": "2013-10-18 00:00:00",
"CityID": "",
"CurrencyCode": "RMB",
"HotelID": "",
"HotelName": "上海凯顿酒店",
"ListID": "",
"PayAmt": "",
"PayType": "",
"RommsCnt": "",
"SPTransID": "",
"State": ""
}
]

Json转换成DataTable的更多相关文章

  1. json转换成对象

    在json转换成对象时,json的key会与java 类的字段一一对应.如果没有映射上的java字段会在该数据类型上填充默认值,如int 0,String null 等. 没有映射的json key在 ...

  2. 带复杂表头合并单元格的HtmlTable转换成DataTable并导出Excel

    步骤: 一.前台JS取HtmlTable数据,根据设定的分隔符把数据拼接起来 <!--导出Excel--> <script type="text/javascript&qu ...

  3. C#_List转换成DataTable

    /// <summary> /// 讲list集合转换成datatable /// </summary> /// <param name="list" ...

  4. 将List转换成DataTable

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  5. list转换成DataTable

    list转换成DataTable类如下: public static DataTable ToDataTable<T>(this IList<T> datas) { DataT ...

  6. 将list<对象>转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据

    领导让在存储过程中批量添加数据,找出效率最高的,我看到后台代码后,发现可以将list<对象>转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据,知道还有其 ...

  7. C# DataTable转换成实体列表 与 实体列表转换成DataTable

    /// <summary> /// DataTable转换成实体列表 /// </summary> /// <typeparam name="T"&g ...

  8. 获取报告 Stream转string,利用字符串分割转换成DataTable

    protected void Button1_Click(object sender, EventArgs e) { MemoryStream stream = new MemoryStream(); ...

  9. C#:CsvReader读取.CSV文件并转换成DataTable

    原文引用:https://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader using LumenWorks.Framework.IO.Csv; ...

随机推荐

  1. 用VS Code Debug Python

  2. PowerShell 解决红字一闪而过问题

    起因 起初只想在 win7上实现 pause 效果而已 cmd /c pause | out-null 结果只能看到红字一闪而过 打开 PowerShell ISE 进行调试 这次清楚的看到红字提示 ...

  3. Node.js常用express方法

    Node.js 手册查询-Express 方法 1.send方法 send 方法向浏览器发送一个响应信息,并可以智能处理不同类型的数据 send方法在输出响应时会自动进行一些设置,比如HEAD信息.H ...

  4. [Ynoi2016]掉进兔子洞 题解

    题面传送门:https://www.luogu.org/problemnew/show/P4688 (温馨提示,请直接翻至题目描述部分) 1e5的数据范围,以及对区间每个权值出现次数取min此类主席树 ...

  5. [luogu2414 NOI2011]阿狸的打字机 (AC自动机)

    传送门 Solution 我们知道AC自动机上如果有一点A的fail[A]->B那么B为A的一个后缀 那么我们的问题\((x,y)\)就变为在y中有多少个点直接或间接连向x的终止节点 如果写暴力 ...

  6. 1.VMware虚拟机的安装

    1.找到安装软件 2.使用如下操作安装 3.选择接受协议 4.修改安装目录 5.如果上一步有修改,此步骤不用改路径 7.安装后创建桌面快捷方式 8.安装成功可以看到桌面上有快捷方式图标 安装结束 声明 ...

  7. 【学习笔记】有向无环图上的DP

    手动博客搬家: 本文发表于20180716 10:49:04, 原地址https://blog.csdn.net/suncongbo/article/details/81061378 首先,感谢以下几 ...

  8. 轻量级本地数据库SQLite在WinRT的使用

    开发环境:Windows 8.1 开发工具:Visual Studio Express 2013 for Windows SQLite数据库介绍 1.SQLite是一款轻型的嵌入式数据库,使用C++开 ...

  9. VS的代码管理工具

    参考文章 可以从中知道修改代码段是要打开相关路径下的文档来修改 官方下载地址 百度云盘 如果项目中国有一些代码重复率非常高,可以把这些代码做成snippet代码段,简化成快捷键命令,加速开发

  10. springmvc 监听器getWriter() has already been called for this response问题

    springmvc 监听器getWriter() has already been called for this response问题 在监听器中,如果return true,就不要使用 respo ...