必须要掌握的技能!!! 我这里的案例是Json字符串作为项目的数据源

时间:2022-05-13 07:15:27

我们都是世上多余的人,但至少我们对付相互都是世界最重要的人。

Json 百度百科上这样说:

JSON( Object Notation, JS 东西符号) 是一种轻量级的数据交换格局。

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

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

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

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

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

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

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

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

必须要掌握的技能!!! 我这里的案例是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字符串作为项目的数据源

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