本文转自 https://blog.csdn.net/pinebud55/article/details/52240287 感谢pinebud55分享

之前我们有讨论过c#是如何处理json的,在我的客户端中,需要接收服务端的数据,并且用列表展示出来,列表控件我采用的是winfrom自带的DataGridView,从服务端得到的响应是一串json字符串,为了提高效率和简洁代码,我不想采用解析json并填充控件的方式,而是希望将json转化为datatable,直接绑定控件.

解决方案

  1. 解析Json.我们从服务端得到的json格式如下

string response={"672":
{"id": "672",
"level":0,
"children":[
"b9185a050d0540fea32cdd6fdf5e0d7d",
"727dc5216f504174a30475f268a616f8",
"57c8e7da25a34bee832d8fd2cfeed5c1"]
},
"673":
{"id": "673",
"level":1,
"children":[
"b9185a050d0540fea32cdd6fdf5e0d7d",
"727dc5216f504174a30475f268a616f8",
"57c8e7da25a34bee832d8fd2cfeed5c1"]
}
}

参考之前文字的解析,将字符串转换为Json对象,之后转换为JProperty对象,方便之后遍历

 JObject json = JObject.Parse(response);
IEnumerable<JProperty> property = json.Properties();

2.转换为JArray对象

JObject和JProperty对象均不能转换为datatable,只有JArray可以,所以通过遍历将JProperty对象转换为JArray。

  JArray ay = new JArray();
foreach (JProperty item in property)
{
JObject child = JObject.Parse(item.Value.ToString());
ay.Add(child);
}

3.反序列化Json

得到的JArray对象实际上是一个Json的字符串数组,我们将其进行反序列化

    DataTable db=new DataTable();
db=JsonConvert.DeserializeObject<DataTable>(ay.ToString());

完整代码如下:

    JObject json = JObject.Parse(response);
IEnumerable<JProperty> property = json.Properties();
JArray ay = new JArray();
DataTable db=new DataTable();
foreach (JProperty item in property)
{
JObject child = JObject.Parse(item.Value.ToString());
ay.Add(child);
}
db=JsonConvert.DeserializeObject<DataTable>(ay.ToString());
dataGridView1.DataSource = db;

当然,也可以将datatable 对象序列化为Json

string json = JsonConvert.SerializeObject(dt);

C#客户端Json转DataTable的更多相关文章

  1. #region Json转DataTable

    #region  Json转DataTable        private DataTable Json2Dtb(string json)        {            JavaScrip ...

  2. DateTable与List<T>相互转换 及JSON与DataTable(DataSet)相互转化

    http://www.360doc.com/content/13/0712/09/10504424_299336674.shtml Linq处理List数据 http://blog.163.com/l ...

  3. C#Json转DataTable

    需求:有一个log文件,需要整理成Excel,日志文件里面的数据都是json字符串 思路是,把Json字符串转换成DataTable,然后导出到Excel 在网上找了一些资料,整理了以下三种类型的Js ...

  4. json转datatable(正则表达式的方法)

    /// <summary> /// 将json转换为DataTable /// </summary> /// <param name="strJson" ...

  5. DataTable转Json,Json转DataTable

    // 页面加载时 /// </summary> /// <param name="sender"></param> /// <param ...

  6. c# 将json转换为DataTable

    /// <summary> /// 将json转换为DataTable /// </summary> /// <param name="strJson" ...

  7. json与DataTable相互转换

    首先我们看看 Newtonsoft.Json.JsonConvert 是怎么完成的: DataTable table = new DataTable(); table.Columns.Add(&quo ...

  8. PCB MS SQL 存储过程(CLR) 实现Json转DataTable表的方法

    一.准备需转为DataTable的json字符串 原json字符串数据 [{"TechName":"ECN","TechNo":" ...

  9. JSON之Asp.net MVC C#对象转JSON,DataTable转JSON,List转JSON,JSON转List,JSON转C#对象

    一.JSON解析与字符串化 JSON.stringify() 序列化对象.数组或原始值 语法:JSON.stringify(o,filter,indent) o,要转换成JSON的对象.数组或原始值 ...

  10. JSON之Asp.net MVC C#对象转JSON,DataTable转JSON,List<T>转JSON,JSON转List<T>,JSON转C#对象

    一.JSON解析与字符串化 JSON.stringify() 序列化对象.数组或原始值 语法:JSON.stringify(o,filter,indent) o,要转换成JSON的对象.数组或原始值 ...

随机推荐

  1. Golang之常用方法[总结]

    1. 有一堆数字,如果除了一个数字以外,其他数字都出现了两次,那么如何找到出现一次的数字? nums := []int{1, 5, 1, 6, 5, 3, 6} i := 0 for _, v := ...

  2. vue中使用elementUI的全选表格,点击全选,选中子表格的checkbox

    效果图如下: 由于elementUI提供的表格没办法满足需求,我就在elementUI表格的基础上又做了一些改动 首先,全选的checkbox不是表格自带的,是自己加上去的,子表格中的checkbox ...

  3. C语言离散化

    C语言离散化 最近看到STL就不想用, 于是写个C语言离散化, 居然能过主席树板子, 就写个博客介绍一下. qsort和bsearch都在<stdlib.h>或<cstdlib> ...

  4. SaaS架构中多租户的概念

    SaaS架构中多租户的概念 租户可以理解为部署在云端的客户,通常出现在2B的企业中,比如现在学校的一卡通管理,通常是一个公司来做的,学校本地不需要做任何部署,而这个公司又是服务了很多个学校,那么学校对 ...

  5. 数据万象 | AIGC 存储内容安全解决方案

    AIGC(人工智能生产内容) 已经成为与PGC(专业生产内容).UGC(用户生产内容)并驾齐驱的内容生产方式.由于 AI 的特性,AIGC在创意.个性化.生产效率等方面具有独特的优势,这些优势可以使得 ...

  6. .NET Aspire 中的服务发现

    .NET Aspire 中的服务发现 https://www.nuget.org/packages/Microsoft.Extensions.ServiceDiscovery .NET Aspire ...

  7. 【MyBatis】学习笔记09:动态设置表名

    [Mybatis]学习笔记01:连接数据库,实现增删改 [Mybatis]学习笔记02:实现简单的查 [MyBatis]学习笔记03:配置文件进一步解读(非常重要) [MyBatis]学习笔记04:配 ...

  8. Specifications动态查询

    [前言说明] 针对CRUD种的查询,因为我们的查询总是具有各种各样的筛选条件 为了我们的程序能够更加适应筛选条件的变化,SpringDataJpa提供了Specifications这种解决方案 Spe ...

  9. Harbor 入门指南

    Harbor 介绍 Harbor 是由 VMware 开源的一款云原生制品仓库,Harbor 的核心功能是存储和管理 Artifact.Harbor 允许用户用命令行工具对容器镜像及其他 Artifa ...

  10. Python 在Excel单元格中应用数据条

    在Excel中添加数据条是一种数据可视化技巧,它通过条形图的形式在单元格内直观展示数值的大小,尤其适合比较同一列或行中各个单元格的数值.这种表示方式可以让大量的数字信息一目了然.本文将介绍如何使用Py ...