type
Post
status
Published
date
Jul 2, 2021
slug
example-5
summary
JSON学习记录
tags
工具
开发
category
技术分享
icon
password
前言:JSON序列化存储数据简单记
JSON
概述
只要能打开文档的软件都能打开Json文件常用的一些编辑Json文件的方式
1.系统自带——记事本、写字板
2.通用文本编辑器——SublimeText等等
3.网页上的Json编辑器
创建Json文件
直接右键创建文本,后缀改为json
选择自己喜欢的用于编辑Json的软件进行文本编辑
注释
和C#中注释方式一致
1.双斜杠//注释内容
2.斜杠加星号/*注释内容*/
基本语法
Json格式是一种键值对格式
语法规则

冒号代表的是键值对的对应关系
逗号就是分割成员变量的间隔符
Json当中的键一定要用双引号包裹,后面值使用什么符号取决于类型是什么
"name": "红烧肉","age": 18,"home":{"address":"成都","street":"春熙路"},"ids": [1,2]"dic": {"1": "123", "2": "12"}字典的话,键会变成双引号,转换时要注意!!注意:
1.如果数据表示对象那么最外层有大括号
2.一定是键值对形式
3.键一定是字符串格式
4.键值对用逗号分开
5.数组用[]包裹
6.对象用{}包裹
JSON
Excel转JSON
Excel中的配置数据
1.在百度或者Google搜索Excel转Json
2.选择在线转换的网站
3.进行转换
4.保存Json格式的数据
意义
1.在Excel表中配置游戏数据
更方便策划人员配置
2.将Excel表中配置的数据转为Json配置
方便将数据读取到内存中
JsonUtlity序列化与反序列化
JsonUtlity
JsonUtlity是unity自带的用于解析Json的公共类
1.将内存中对象序列化为Json格式的字符
2.将Json字符串反序列化为类对象
文件中存读字符串
存储字符到路径文件中
需要保证文件夹指向路径是有这个文件夹的,可以不需要写文件夹,直接写文件后缀跟格式
读取字符
进行序列化
基本语法
Jsonutility提供了线程的方法可以把类对象序列化为json字符串
string josnStr = JsonUtility.ToJson(对象);返回值stringFile.WriteAllText(Application.persistentDataPath + "/Test.json", josnStr);注意:
1.float序列化时看起来会有一些误差
2.自定义类需要加上序列化特性
[System.Serializable]3.想要序列化私有变量需要加上特性
[SerializeField]4.JsonUtility不支持字典
5.JsonUtlity存储nu11对象不会是nu1l而是默认值的数据
进行反序列化
把硬盘的数据读取到内存中
JsonUtlity.FromJson(字符串);MrTang t = JsonUtlity.FromJson<MrTang>(josnStr);如果Json内的数据少了,读取到内存中类对象时不会报错
注意事项
JsonUtlity无法直接读取数据到集合,需要读取时可以封装成对象
RoleData data = JsonUtlity.FormJson<RoleData>(josnStr);JSON的文本编码格式需要UTF-8不然无法加载
LitJson序列化与反序列
是什么
它是一个第三方库,用于处理Json的序列化和反序列化
LitJson是C#编写的,体积小、速度快、易于使用
它可以很容易的嵌入到我们的代码中
只需要将LitJson代码拷贝到工程中即可
获取LitJson
前往LitJson官网
通过官网前往GitHub获取最新版本代码
拷贝到unity工程中即可开始使用LitJson
进行序列化
string jsonStr = JsonMapper.ToJson(t);注意:
1.相对JsonUtlity不需要加特性
2.不能序列化私有变量
3.支持字典类型,字典的键建议都是字符串因为Json的特点Json中的键会加上双引号
4.要引用LitJson命名空间
5.可以准确保存null类型
进行反序列化
注意:
1.类结构需要无参构造函数,否则反序列化时报错(手动搞一个无参构造函数)
2.字典虽然支持,但是键在使用为数值时会有问题,需要使用字符串类型(不支持int类型)把int类型改成string才可以使用
注意事项
LitJson可以直接读取数据集合
jsonStr = File.ReadAllText(Application.streamingAssetsPath + "/RoleInfo2.json");RoleInfo2[] arr = JsonMapper.Toobject<RoleInfo2[]>(jsonStr);JSON的文本编码格式需要UTF-8不然无法加载
对比
相同点
1.他们都是用于Json的序列化反序列化
2.Json文档编码格式必须是UTF-8
3.都是通过静态类进行方法调用
不同点
1.JsonUtlity是Unity自带,LitJson是第三方需要引用命名空间
2.JsonUtlity使用时自定义类需要加特性,LitJson不需要
3.JsonUtlity支持私有变量(加特性),LitJson不支持
4.JsonUtlity不支持字典,LitJson支持(但是键只能是字符串)
5.JsonUt1ity不能直接将数据反序列化为数据集合(数组字典),LitJson可以
6.JsonUtlity对自定义类不要求有无参构造,LitJson需要
7.JsonUt1ity存储空对象时会存储默认值而不是nul1,LitJson会存null
如何选择
根据实际需求建议使用LitJson
原因:LitJson不用加特性,支持字典,支持直接反序列化为数据集合,存储null更准确
JSON优缺点
优点
1.和XML一致的有点Json是国际通用规则
跨平台(游戏,软件,网页等等都能用,不同操作系统也能用)文件结构清晰易懂
非常容易编辑和理解
可以用于网络通信交换数据
2.可以利用Excel转Json帮助策划进行数据配置
缺点
重复工作量繁多
自定义数据类,都需要自己去实现存储读取的功能而且代码的相似度极高
数据容易被修改
只要找到文件位置,就可以轻易的进行数据修改
- Author:Syngeneticlake
- URL:https://syngeneticlake.top//article/example-5
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!