本文转自 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. NZOJ 模拟赛4

    T1 数字游戏 大家列队后,都觉得累了,于是一起坐到院子中的草地上休息.这时Anna突然想跟她的最大竞争对手Cici玩一个数字游戏,她要你编写程序帮助她取得胜利. 第i次游戏初始时有一个整数N_i(1 ...

  2. 高性能计算-雅可比算法-MPI重复非阻塞优化(7)

    #include <stdio.h> #include <mpi.h> #include <unistd.h> #include <stdlib.h> ...

  3. 关于ClassLoader中getResource与getResourceAsStream的疑问

    背景: 某日临近下班,一个同事欲任何类中获取项目绝对路径,不通过Request方式获取,可是始终获取不到预想的路径.于是晚上回家google了一下,误以为是System.getProperty(&qu ...

  4. 高性能消息队列之nsq

    NSQ 是实时的分布式消息处理平台,其设计的目的是用来大规模地处理每天数以十亿计级别的消息. NSQ 具有分布式和去中心化拓扑结构,该结构具有无单点故障.故障容错.高可用性以及能够保证消息的可靠传递的 ...

  5. Element-Plus表格:Table自定义合并行数据的最佳实践

    " 知行合一 " -- 王阳明 在开发项目中,我们时常会用到表格,许多需求可能会要求自定义特定的行或列. 接下来,我们将探讨在实际开发中如何应对这一挑战. 本文案例采用的技术: 名 ...

  6. C#/.NET/.NET Core优秀项目和框架2024年11月简报

    前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的详细介绍.功能特点.使用方式以及部分功能 ...

  7. 【漏洞分析】Vestra DAO 攻击事件:这个质押项目它取款不核销呀

    背景信息 攻击交易:https://app.blocksec.com/explorer/tx/eth/0x9a1d02a7cb9fef11fcec2727b1f9e0b01bc6bcf5542f5b6 ...

  8. QEMU固件模拟技术-stm32仿真分析及IRQ仿真实践

    文章首发于 https://forum.butian.net/share/124 概述 上一篇文件介绍了luaqemu的实现,也提到luaqemu并没有对中断相关api进行封装,本节主要基于stm32 ...

  9. R数据分析:生存数据的预测模型建立方法与评价

    之前写了生存分析列线图的做法,列线图作为一个预测模型可视化工具,我们使用它的过程其实就是一个给新数据做预测的过程,其内在本身的模型就是我们基于现有数据训练的一个预测模型,今天也算是接着上一篇文章继续写 ...

  10. Spring 话题

    我从来不用 spring,项目再大也不会考虑 spring 那套模式.什么依赖注入控制反转,叠床架屋,对开发和运维可以说有害无益.上文 zz Spring 是一种反模式 - Inshua - 博客园 ...