Json转换成DataTable
今天看到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的更多相关文章
- json转换成对象
在json转换成对象时,json的key会与java 类的字段一一对应.如果没有映射上的java字段会在该数据类型上填充默认值,如int 0,String null 等. 没有映射的json key在 ...
- 带复杂表头合并单元格的HtmlTable转换成DataTable并导出Excel
步骤: 一.前台JS取HtmlTable数据,根据设定的分隔符把数据拼接起来 <!--导出Excel--> <script type="text/javascript&qu ...
- C#_List转换成DataTable
/// <summary> /// 讲list集合转换成datatable /// </summary> /// <param name="list" ...
- 将List转换成DataTable
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- list转换成DataTable
list转换成DataTable类如下: public static DataTable ToDataTable<T>(this IList<T> datas) { DataT ...
- 将list<对象>转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据
领导让在存储过程中批量添加数据,找出效率最高的,我看到后台代码后,发现可以将list<对象>转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据,知道还有其 ...
- C# DataTable转换成实体列表 与 实体列表转换成DataTable
/// <summary> /// DataTable转换成实体列表 /// </summary> /// <typeparam name="T"&g ...
- 获取报告 Stream转string,利用字符串分割转换成DataTable
protected void Button1_Click(object sender, EventArgs e) { MemoryStream stream = new MemoryStream(); ...
- C#:CsvReader读取.CSV文件并转换成DataTable
原文引用:https://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader using LumenWorks.Framework.IO.Csv; ...
随机推荐
- 递归删除List元素
public List<Redenvelope> DeleteList(List<Redenvelope> list) { foreach (var item in list) ...
- Java RMI之HelloWorld经典入门案例
Java RMI 指的是远程方法调用 (Remote Method Invocation).它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法.可以用此方 ...
- Spring AOP --JDK动态代理方式
我们知道Spring是通过JDK或者CGLib实现动态代理的,今天我们讨论一下JDK实现动态代理的原理. 一.简述 Spring在解析Bean的定义之后会将Bean的定义生成一个BeanDefinit ...
- vue-router 懒加载
懒加载:也叫延迟加载,即在需要的时候进行加载,按需加载. 那vue 为什么需要懒加载呢? 使用 vue-cli构建的项目,在默认情况下,执行 npm run build 会将所有的 js代码打包为一 ...
- 洛谷P1339 [USACO09OCT]热浪Heat Wave
思路:裸SPFA过一遍(建议使用邻接链表存储),无向图,无向图,无向图,重要的事情要说三遍!!!蜜汁RE是什么鬼????第九个点数组开到20K,第十个点数组开到30K才AC.或许我代码写的有bug?( ...
- 最小化安装CentOS-7-x86_64-Minimal-1511图文教程
说明: 虚拟机产品:VMware® Workstation 12 Pro,版本:12.5.0 build-4352439 系统镜像:CentOS-7-x86_64-Minimal-1511.iso 操 ...
- JDK环境变量设置(linux)
1.下载jdk1.8版本软件包 2.解压 tar -zxvf jdk1.8.tar.gz mv jdk1.8 /usr/local/ 3.添加环境变量 vim /etc/profile 在文件底部加入 ...
- RabbitMQ学习总结(1)——基础概念详细介绍
一.基础概念详细介绍 1.引言 你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用.通讯的问题而苦恼.挣扎?如果是,那么恭喜你,消息服务让你可以很轻松 ...
- 【入门篇】ANDROID开发之BUG专讲
话说诸葛亮是一个优秀的程序员,每个锦囊都是应对不同的case而编写的.可是优秀的程序员也敌只是更优秀的bug.六出祈山.七进中原,鞠躬尽瘁,死而后已的诸葛亮仅仅由于有一个错误的case-马谡,整个结构 ...
- C++设计模式之状态模式(二)
2.智能空调的设计与实现 某软件公司将开发一套智能空调系统: 系统检測到温度处于20---30度之间,则切换到常温状态:温度处于30---45度,则切换到制冷状态: 温度小于20度,则切换到制热状态. ...