vr引擎设计-c#基础第十二天

704 阅读4分钟

一、使用JSON进行数据传输

1.什么是JSON

JSON官网www.json.org/json-zh.htm… JSON (JavaScript Object Notation) 的轻量级数据交换格式能够替代XML进行数据传输,首先,它是一个字符串,一个有规则的字符串。然后它的表现形式是键值对的,有点像我们前面学的字典Dictionary,以下是JSON的格式,我们可以看到是一组组键值对,在做web开发的时候我们 就是通过JSON来实现接口数据的传输,我们可以看到JSON数据是非常直观的,更易于我们理解和查看,而且JSON也是支持c#的。

2.JSON的语法规则

image.png 根节点可以是对象也可以是数组

{
  "person": {
    "name": "pig",
    "age": "18",
    "sex": "man",
    "hometown": {
      "province": "江西省",
      "city": "抚州市",
      "county": "崇仁县"
    }
  }
}

也可以是数组的形式

[   {    "name": "pig",    "age": "18",    "sex": "man"    },       {    "name": "cate",    "age": "12",    "sex": "woman"    }  ]

重写类中的ToString()方法,这样我们去打印对象的时候会打印出对应字段或属性 image.png

3.书写JSON文本

image.png

4.引入JSON库文件(LitJSON)

1.两种引入LitJSON的方式

(1) 在项目依赖中引入LitJSON.dll文件

image.png (2) 在项目依赖的NuGet中搜索LitJSON进行添加 image.png

image.png

2.使用泛型去解析JSON(转成对象数组或者list列表)

注意开头要:using:LitJSON image.png 也可以转成list列表

image.png

5.将对象转成JSON格式的字符串

image.png

6.京东练习题

获取京东首页的一级菜单,拿到每一组菜单放到数组中,然后该数组作为对象的一个字段Firstmenu,最后将对象放到数组中,然后将数组转成json字符串写到1.txt文件中

image.png

7.相关链接:

Json校验格式化工具:  www.bejson.com/

Josn编辑器:  www.bejson.com/jsoneditoro…

二、其他几种数据集合

1.栈Stack

Stack是c#为我们封装好的一个类,本质是Object[]数组,只是封装了特殊的存储规则,Stack是栈存储容器,栈是一种先进后出的数据结构,先存入的数据后获取,后存入的数据先获取

image.png

1.创建一个栈对象

需要using:System.collections; image.png

2.栈的相关操作

  1. 压(入)栈

image.png

  1. 弹栈,刚才最后入栈的是new Test(),所以等下出栈第一个应该是一个对象

image.png

  1. 查询栈中的值
  • 查看栈顶的值 image.png
  • 查看元素是否在栈中 image.png
  1. 栈中改变元素只能是压栈和弹栈还有清空

image.png

  1. 获取栈中的长度 stack.Count

  2. 使用foreach遍历栈

image.png

  1. 循环弹栈

image.png

3.栈的相关练习题

编写一个方法计算任意一个十进制数的二进制数,使用栈的结构方式存储,之后打印出来

image.png

2.队列Queue

Queue是一种先进先出的数据结构,就像我们排队一样,先排在前面的人先出去 image.png

1.队列的相关操作

  1. 入队列

image.png

  1. 出队列

image.png

  1. 查询队列

image.png

image.png

  1. 删除队列

image.png

  1. 遍历队列

image.png

2.队列练习题

使用队列存储消息,一次性存10条消息,每隔一秒打印一条消息,控制台打印消息时要有明显的停顿感,每隔一秒使用Thread.Sleep(1000)

image.png

3.哈希表Hashtable

1.Hashtable的本质

Hashtable又称散列表,是基于键的哈希代码组织起来的键值对,它的主要作用是提高数据查询的效率,使用键来访问集合中的元素,注意我们讲的都是集合类,所有都在 System.Collections

2.增加键值对

image.png

3. 删除键值对

image.png

4.查询哈希表中的键和值

image.png

image.png

5.改

image.png

6.遍历

  1. 得到键值对个数

image.png 2. 遍历所有键名

image.png

  1. 遍历所有值

image.png

  1. 遍历键值对

image.png

7. 练习题

使用类和哈希表制作怪物存储器,每个怪物都有自己唯一的id,我们每添加一个怪物就将怪物添加到哈希表中,键名为id,值为怪物对象,类中还有删除怪物的方法,每次删除就从哈希表中移除对象

4.链表

链表分单向链表和双向链表,单向链表中每一个元素都存储着另外一个元素的内存地址,这样每个元素就互相连接起来了,双向链表中放着两个元素的内存地址。

image.png

1.实现一个简单的单向链表LinkList类

image.png

image.png

2.c#提供的LinkedList类

  1. 创建一个双向链表

image.png 2. 往链表中添加元素

image.png 3. 在指定节点的后面和前面插入节点

image.png

  1. 移除节点

image.png

  1. 查找节点

image.png

  1. 判断节点是否存在

image.png

  1. 使用foreach遍历

image.png

  1. Next获取下节点,Perivious获取上一个节点

image.png

  1. 通过节点去遍历

image.png