今天看到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. AdaBoost--从原理到实现(Code:Python)

    本文对原文有修改,若有疑虑,请移步原作者.  原文链接:blog.csdn.net/dark_scope/article/details/14103983 集成方法在函数模型上等价于一个多层神经网络, ...

  2. vue中怎样实现 路由拦截器

    vue中怎样实现 路由拦截器(当用户没有登录的时候,跳转到登录页面,已经登录的时候,不能跳转到登录页,除非后台token失效) 在 我们需要实现这样 一个功能,登录拦截 其实就是 路由拦截,首先在定义 ...

  3. visual studio2017 创建Vue项目

    1:打开Visual studio 2017后 按图片操作新建项目 也可以使用快捷键Ctrl+Shift+N  进入创建项目页面 2:选择JavaScript 里的Node.js创建对应的Vue项目 ...

  4. HDU1850 - Being a Good Boy in Spring Festival 【尼姆博弈】

    一年在外 父母时刻牵挂  春节回家 你能做几天好孩子吗  寒假里尝试做做下面的事情吧  陪妈妈逛一次菜场  悄悄给爸爸买个小礼物  主动地 强烈地 要求洗一次碗  某一天早起 给爸妈用心地做回早餐  ...

  5. Laravel 5

    遍历数组@foreach($brand as $v) <a href='/brandss/seeshops?id={{$v->id}}'><img src="/pub ...

  6. 解读grub.conf文件

    我们将来看看grub.conf文件内语句,(注:...)内的东西是我们的解读内容. # grub.conf generated by anaconda # # Note that you do not ...

  7. SpringBoot支持AJAX跨域请求

    利用注解的方式解决AJAX请求跨域问题 1.编写一个支持跨域请求的 Configuration - 第一种方式 - CorsConfig.java import org.springframework ...

  8. MySQL必知必会面试题 基础

    1.登录数据库 (1).单实例 mysql -uroot -poldboy (2).多实例 mysql -uroot -poldboy -S /data/3306/mysql.sock 2.查看数据库 ...

  9. 基于Mybatis的Mysql数据库文档生成工具,支持生成docx(原创)

    今天不写android--也写写数据库相关的东西 -------------------- 今日老夫闲来无事,设计了一款数据库文档生成工具 眼下仅仅支持mysql 主要是生成docx的 下载链接:下载 ...

  10. 一个简单的ant应用

    <pre name="code" class="html"><?xml version="1.0" encoding=&q ...