C#客户端Json转DataTable
本文转自 https://blog.csdn.net/pinebud55/article/details/52240287 感谢pinebud55分享
之前我们有讨论过c#是如何处理json的,在我的客户端中,需要接收服务端的数据,并且用列表展示出来,列表控件我采用的是winfrom自带的DataGridView,从服务端得到的响应是一串json字符串,为了提高效率和简洁代码,我不想采用解析json并填充控件的方式,而是希望将json转化为datatable,直接绑定控件.
解决方案
解析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的更多相关文章
- #region Json转DataTable
#region Json转DataTable private DataTable Json2Dtb(string json) { JavaScrip ...
- DateTable与List<T>相互转换 及JSON与DataTable(DataSet)相互转化
http://www.360doc.com/content/13/0712/09/10504424_299336674.shtml Linq处理List数据 http://blog.163.com/l ...
- C#Json转DataTable
需求:有一个log文件,需要整理成Excel,日志文件里面的数据都是json字符串 思路是,把Json字符串转换成DataTable,然后导出到Excel 在网上找了一些资料,整理了以下三种类型的Js ...
- json转datatable(正则表达式的方法)
/// <summary> /// 将json转换为DataTable /// </summary> /// <param name="strJson" ...
- DataTable转Json,Json转DataTable
// 页面加载时 /// </summary> /// <param name="sender"></param> /// <param ...
- c# 将json转换为DataTable
/// <summary> /// 将json转换为DataTable /// </summary> /// <param name="strJson" ...
- json与DataTable相互转换
首先我们看看 Newtonsoft.Json.JsonConvert 是怎么完成的: DataTable table = new DataTable(); table.Columns.Add(&quo ...
- PCB MS SQL 存储过程(CLR) 实现Json转DataTable表的方法
一.准备需转为DataTable的json字符串 原json字符串数据 [{"TechName":"ECN","TechNo":" ...
- JSON之Asp.net MVC C#对象转JSON,DataTable转JSON,List转JSON,JSON转List,JSON转C#对象
一.JSON解析与字符串化 JSON.stringify() 序列化对象.数组或原始值 语法:JSON.stringify(o,filter,indent) o,要转换成JSON的对象.数组或原始值 ...
- 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的对象.数组或原始值 ...
随机推荐
- 鸿蒙NEXT开发案例:二维码的生成与识别
[引言] 在本篇文章中,我们将探讨如何在鸿蒙NEXT平台上实现二维码的生成与识别功能.通过使用ArkUI组件库和相关的媒体库,我们将创建一个简单的应用程序,用户可以生成二维码并扫描识别. [环境准备] ...
- Gitlab之CICD环境变量
CI/CD variables are a type of environment variable. You can use them to: Control the behavior of job ...
- nginx 访问 nodejs 慢的问题
1.问题现象 通过nginx 访问 nodejs 访问特别慢.但是通过nodejs 直接访问速度很快响应. 2.日志错误 upstream timed out (10060: A connection ...
- Epicor 10 SaaS云登录
随着云计算的普及,几乎所有的软件都可以云化了,但事实上,并没有.尤其是在管理软件领域起步较早的 ERP 似乎在云化的道路上一直步履蹒跚. 随着公共云的成熟,人们的观念已经改变.云计算和 SaaS 提供 ...
- PM-企业数字化转型,数据治理是关键
企业数字化转型是大势所趋,通过数据治理.数据平台建设.数据分析与建模,把数据变成服务,使数据能在企业内顺畅流动起来,为企业带来巨大的价值.数据是企业数字化转型的重要基础. 数据能创造价值,但数 ...
- Windows的树形目录结构
一.文件.文件夹(目录).逻辑盘.路径的概念 · 文件:是操作系统用来存储和管理信息的基本单位.每个文件都有一个名称,叫文件名.文件名通常由基本文件名和扩展名两部分组成,其中基本文件名用于说明文件 ...
- 助推乡村振兴,四川农担X中电金信大数据智能风控平台彰显“榜样的力量”
在2024年3月召开的两会上,政府工作报告首次提到了要大力发展科技金融.绿色金融.普惠金融.养老金融.数字金融,为深入推进金融高质量发展,走中国特色金融发展之路指明了方向.其中,四川农担作为一家专注 ...
- 【Python】【爬虫】爬虫问题:requests的content和text
爬虫问题:requests的content和text 通常来说,text获取的是Unicode编码的文本数据,content获取的是byte类型的二进制数据,比如获取图片本身.PDF文件之类的,可以用 ...
- 跟着 8.6k Star 的开源数据库,搞 RAG!
过去 9 年里,HelloGitHub 月刊累计收录了 3000 多个开源项目.然而,随着项目数量的增加,不少用户反馈:"搜索功能不好用,找不到想要的项目!" 这让我意识到,仅仅收 ...
- 手写 PromiseA+ 实现,轻松通过 872 条用例
手写 Promise/A+ 实现,轻松通过 872 条用例 规范参考:Promise/A+ 规范 - 中文版本 测试工具:https://github.com/promises-aplus/promi ...