一:序列化和反序列化
![](https://img-blog.csdnimg.cn/a09c926e79794b7c9af5687a5f74f058.png)
序列化:把对象转换成字节序列的过程
反序列化:把字节序列还原成对象的过程
注意: 所有的序列化和反序列化的操作都是基于属性的 跟类型的行为没有关系
目的:持久化(持久的是这个类型的属性)
(比如:留照片留影像,但是展示不出成长中的众多事件)
高级语言:面向对象 面向过程 基于对象
格式:xml,
Json (表示
Javascript
对象 但是
Javascript
没有new对象语言 所以想出了json串)
结构:键值对结构
优点:可以表示很复杂的数据
二:Json语法
1:标点符号
{ }表示这是一个类型的对象
[ ]表示是数组或者集合
:用来分割键和值
“ ”用在属性名上
,每个键值对用逗号分割(
最后的键值对没有逗号
)
2:Json允许的属性值类型
string √ char×
整数 小数 √
bool √
数组、集合 √
自定义类型 √
注意:绿色波浪线代表语法错误
3:小练习(一)
第一步:写Json文件,可以先用文档txt写,然后改一下后缀名为json
![](https://img-blog.csdnimg.cn/a2e4f91879504eaea4971ec8fdee2601.png)
第二步:C#脚本里添加引用
在
+using Newtonsoft.Json;
![](https://img-blog.csdnimg.cn/64310d66927a4ed2a0a2270c1c819e9b.png)
第三步:创建类
![](https://img-blog.csdnimg.cn/f234a179f947442d810f0a08787eada1.png)
注意:单击右键 json文件, 始终复制![]()
json文件和上面的属性必须一一对应
![](https://img-blog.csdnimg.cn/f22fefe3d6e4496ab5268592f0433ff4.png)
补充书写总结:(先折叠 看括号 从里到外写类)
第一种:
第二种:
第三种:![]()
第四步:解析
对应上面第一种:
![](https://img-blog.csdnimg.cn/3ef685b0acb143fab1714d0622f07ac5.png)
对应上面第二种:
对应上面第三种:【 对象里面带了集合 所以需要再写一个类】
![](https://img-blog.csdnimg.cn/2e428a90541944abadb8aeffff62c9de.png)
![](https://img-blog.csdnimg.cn/26a612307e4041dcb2f39bd510b02c5e.png)
因为有集合 所以用了stringbuilder
注意:
1:匹配的类:
在声明一个类型的时候 所有的json中的属性名和类中的属性名必须保持一致
2:抽象方法不在普通类里 不能匹配json解析 用虚方法
4:小练习(二)
如果文件里有集合名:
![](https://img-blog.csdnimg.cn/9e48e752ea5c4766930172d8997b59bd.png)
(注意:不是所有的类库都能解析出double 用
float
)
1先创建tank类 再写一个class类
![](https://img-blog.csdnimg.cn/7e4a7755e59d4d04a8a85ee15da857ba.png)
![](https://img-blog.csdnimg.cn/26ab40396bed4e209739a9f08dd8c85f.png)
2声明一个集合
![](https://img-blog.csdnimg.cn/aee6f305b58242c19b530bf4e499ee55.png)
如果文件里没有集合名:
![](https://img-blog.csdnimg.cn/936af90aef664e92a8d1d2d88c6d59a5.png)
1先写一个武器类
![](https://img-blog.csdnimg.cn/b74a1100ab5641b9a79542798f4080f4.png)
2主函数里直接存放
![](https://img-blog.csdnimg.cn/08dfd68bbfe04a558664b5f3ff85284f.png)