C# 解析复杂的Json文件

我们都是世上多余的人,但至少我们对于彼此都是世界最重要的人。

Json 百度百科上这样说:

JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。

它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。

简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

照我看来,它有两种形式,

一 :  它是一种数据传输通道  二 : 它有时候可以直接作为数据源

因此如何读取,解析它 是我们作为软件开发人员,必须要掌握的技能!!!

我这里的案例是Json字符串作为项目的数据源,我的工作是把它解析出来,封装成 dataSet 供窗体作显示用。

首先第一步 : 打开Json文件,先沉下心来看半个小时,如果没看懂。那就再看半小时,直到清楚它的结构为止。

第二步 : 也是很关键的一步,创建实体类  网上有自动转换的工具,访问这个网址:https://www.bejson.com/convert/json2csharp/ 把你的json 粘贴复制到上面即可 它会自动转换成你想要的。

这就是我的实体类 结构不算很复杂

第三步 : 实例好了实体类对象 就可以转换了 C#提供了很多操作Json 的工具类

我用的是 JsonConvenrt类下面的DeserializeObject<T>(string value)方法

具体格式为

对象 = JsonConvenrt.DeserializeObject<对象>(Json字符串);

如果对象的结构和你的Json 结构一致 一般是不会报什么错的~~

第四步 : 下面就是把实体类转换成DataSet对象了

代码如下:  可直接套用

DataSet ds  = new DataSet();

DataTable dt = new DataTable();

DataColumn dname= new DataColumn(”名字",typeof(string));

dname.maxLength = 20;  //次列的最大长度 此属性可有可无

dt.Columns.add(dname);

DataColumn dAge = new DataColumn("年龄"mtypeof(string));

dAge.maxLength = 20;

dt.Columns.add(dAge);

DataColumn dSex = new DataColumn("性别",typrof(int));

dSex.maxLebgth = 20;

dt.Columns.add(dSex);

foreach(Student stu in List<Student>){    //这就是实体类喽

DataRow dr = new DataRow();

dr["年龄"] = stu.age;

dr["名字"] = stu.name;

dr["性别"] = stu.sex;

dt.Rows.add(dr);

}

ds.Tables.add(dt);

最后一步 : 就是绑定datagridview

this.datagridview.DataSource = ds.Table[0];

大功告成 其实很简单 主要就是不要慌 慢慢来

在这里 我说说我遇到的Bug

就是在第三步转换实体类的时候,会报这个错:

意思是 : 错误的转换 在Json里某一个属性的值 是string 可自动生成时变成了 int 。 类型错误。不要怕麻烦,找到类型不匹配的,一一改回来就可以了。

时间: 2024-11-13 06:34:09

C# 解析复杂的Json文件的相关文章

IOS问题汇总:2015-1-8 SBJson解析时报错—json文件字符非法

SBJson解析时报错—json文件字符非法 Error Domain=org.brautaset.SBJsonParser.ErrorDomain Code=0 “Illegal start of token [ï]” UserInfo=0x7fd46ad98590 {NSLocalizedDescription=Illegal start of token [ï]} IOS应用在iPhone5和iPhone5s上不能全屏显示,应用画面上下各有1条黑色的解决方案——是因为LaunchScree

C# 解析嵌套的json文件.

概述 今天我同学问我如何转换json文件,没处理过,网上搜了一下,json转excel的很少,反过来倒是有许多人写了工具. json文件的结构大致是这样的: 1 {"votes": {"funny": 0, "useful": 7, "cool": 0}, "user_id": "CR2y7yEm4X035ZMzrTtN9Q", "name": "Jim&q

Cocos2dx&amp;Lua - UI显示优化之如何解决解析大量json文件

GUIReader中有个widgetFromJsonFile的方法,此方法是用于解析json文件(cocostudio生成的UI的)并返回该文件的父节点(Widget),然后便于进一步的UI操作(如获得各种子类进行填充数据作显示等). 那么这时候问题就来了,当需要在一个页面或一个控件(尤其是翻页.列表等)中,需要加载入大量的节点(均是由单独json解析得到的),这时,假如你要加入的子节点的json文件在10K左右以上,那么这种大量加载将会使手机非常痛苦(一个几K左右的,在加载数量达到50个左右时

一行代码解析复杂JSON文件:利用Android自带的包解析JSON

上周写了一篇关于Android自带的org.JSON与JSONLIB相冲突的文章,今天我想写一下我对org.json使用的小心得 由于学校项目要求解析一个复杂JSON,所以就上网搜了一下,不过Google一搜JSON数据解析,会出现五花八门的结果,JSONLIB, GSON, FASTJSON等等,唯独没有对org.json的使用,其实Android自带的JSON解析包相当好用,其用法与JSONLIB类似,我是先用的JSONLIB,在JRE环境下用得好好的,到了Android下怎么都跑不通(原来

python解析json文件

概念 序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON.XML等.反序列化就是从存储区域(JSON,XML)读取反序列化对象的状态,重新创建该对象. JSON(JavaScript Object Notation):一种轻量级数据交换格式,相对于XML而言更简单,也易于阅读和编写,机器也方便解析和生成,Json是JavaScript中的一个子集. Python2.6开始加入了JSON模块,无需另外下载,Python的Json模

(网络数据交互)Android解析Internet的Json资源文件

常用的Internet数据解析格式和工具: 网页显示的json数据如下: {"type":"FeatureCollection","metadata":{"generated":1480079277000,"url":"http://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&starttime=2016-11-24&am

IOS开发网络篇-JSON文件的解析

一.什么是JSON数据 1.JSON的简单介绍 JSON:是一种轻量级的传输数据的格式,用于数据的交互 JSON是javascript语言的一个子集.javascript是个脚本语言(不需要编译),用来给HTML增加动态功能. javascript和java没有半毛钱的关系! 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外). 2.JSON的语法规则 <1> 数据以键值的方式保存; 键(key)必须用双引号("key"),与键值之间以':'分隔;

QT开发(六十二)———QT5解析Json文件

QT开发(六十二)---QT5解析Json文件 一.QT5 Json简介 QT4中使用第三方库QJson解析JSON文件. QT5新增加了处理JSON的类,类均以QJson开头,包含在QtCore模块中.QT5新增加六个相关类: QJsonArray 封装 JSON 数组 QJsonDocument 读写 JSON 文档 QJsonObject 封装 JSON 对象 QJsonObject::iterator 用于遍历QJsonObject的STL风格的非const遍历器 QJsonParseE

Android--------使用gson解析json文件

##使用gson解析json文件 **json的格式有两种:** **1. {}类型,及数据用{}包含:** **2. []类型,即数据用[]包含:** 下面用个例子,简单的介绍gson如何解析json,仅使用~ 先发两个json 内容 1.最外层是{} {             "resp": "ok",         "result": {             "date": "2013-4-19 16: