一、使用JSON进行数据传输
1.什么是JSON
JSON官网www.json.org/json-zh.htm… JSON (JavaScript Object Notation) 的轻量级数据交换格式能够替代XML进行数据传输,首先,它是一个字符串,一个有规则的字符串。然后它的表现形式是键值对的,有点像我们前面学的字典Dictionary,以下是JSON的格式,我们可以看到是一组组键值对,在做web开发的时候我们 就是通过JSON来实现接口数据的传输,我们可以看到JSON数据是非常直观的,更易于我们理解和查看,而且JSON也是支持c#的。
2.JSON的语法规则
根节点可以是对象也可以是数组
{
"person": {
"name": "pig",
"age": "18",
"sex": "man",
"hometown": {
"province": "江西省",
"city": "抚州市",
"county": "崇仁县"
}
}
}
也可以是数组的形式
[ { "name": "pig", "age": "18", "sex": "man" }, { "name": "cate", "age": "12", "sex": "woman" } ]
重写类中的ToString()方法,这样我们去打印对象的时候会打印出对应字段或属性
3.书写JSON文本
4.引入JSON库文件(LitJSON)
1.两种引入LitJSON的方式
(1) 在项目依赖中引入LitJSON.dll文件
(2) 在项目依赖的NuGet中搜索LitJSON进行添加
2.使用泛型去解析JSON(转成对象数组或者list列表)
注意开头要:using:LitJSON
也可以转成list列表
5.将对象转成JSON格式的字符串
6.京东练习题
获取京东首页的一级菜单,拿到每一组菜单放到数组中,然后该数组作为对象的一个字段Firstmenu,最后将对象放到数组中,然后将数组转成json字符串写到1.txt文件中
7.相关链接:
Json校验格式化工具: www.bejson.com/
Josn编辑器: www.bejson.com/jsoneditoro…
二、其他几种数据集合
1.栈Stack
Stack是c#为我们封装好的一个类,本质是Object[]数组,只是封装了特殊的存储规则,Stack是栈存储容器,栈是一种先进后出的数据结构,先存入的数据后获取,后存入的数据先获取
1.创建一个栈对象
需要using:System.collections;
2.栈的相关操作
- 压(入)栈
- 弹栈,刚才最后入栈的是new Test(),所以等下出栈第一个应该是一个对象
- 查询栈中的值
- 查看栈顶的值
- 查看元素是否在栈中
- 栈中改变元素只能是压栈和弹栈还有清空
-
获取栈中的长度 stack.Count
-
使用foreach遍历栈
- 循环弹栈
3.栈的相关练习题
编写一个方法计算任意一个十进制数的二进制数,使用栈的结构方式存储,之后打印出来
2.队列Queue
Queue是一种先进先出的数据结构,就像我们排队一样,先排在前面的人先出去
1.队列的相关操作
- 入队列
- 出队列
- 查询队列
- 删除队列
- 遍历队列
2.队列练习题
使用队列存储消息,一次性存10条消息,每隔一秒打印一条消息,控制台打印消息时要有明显的停顿感,每隔一秒使用Thread.Sleep(1000)
3.哈希表Hashtable
1.Hashtable的本质
Hashtable又称散列表,是基于键的哈希代码组织起来的键值对,它的主要作用是提高数据查询的效率,使用键来访问集合中的元素,注意我们讲的都是集合类,所有都在 System.Collections中
2.增加键值对
3. 删除键值对
4.查询哈希表中的键和值
5.改
6.遍历
- 得到键值对个数
2. 遍历所有键名
- 遍历所有值
- 遍历键值对
7. 练习题
使用类和哈希表制作怪物存储器,每个怪物都有自己唯一的id,我们每添加一个怪物就将怪物添加到哈希表中,键名为id,值为怪物对象,类中还有删除怪物的方法,每次删除就从哈希表中移除对象
4.链表
链表分单向链表和双向链表,单向链表中每一个元素都存储着另外一个元素的内存地址,这样每个元素就互相连接起来了,双向链表中放着两个元素的内存地址。
1.实现一个简单的单向链表LinkList类
2.c#提供的LinkedList类
- 创建一个双向链表
2. 往链表中添加元素
3. 在指定节点的后面和前面插入节点
- 移除节点
- 查找节点
- 判断节点是否存在
- 使用foreach遍历
- Next获取下节点,Perivious获取上一个节点
- 通过节点去遍历