kizumi_header_banner_img

Hello! Beautiful Kizumi!

加载中

文章导读

数据持久化之Json


avatar
Yuyas 2025年12月19日 17

基本规则

Json格式是一种键值对结构

大括号{ } — 对象

中括号[ ] — 数组/List

冒号: — 键值对对应关系

逗号, — 数据分割

双引号 — 键名/字符串

字典当作对象,用大括号{ }

Tips:

如果数据表示对象,最外层要用大括号{ }

Excel转Json

在线转换网站:

https://www.bejson.com/json/col2json

结果需自行检查

JsonUtility

Unity自带的Json公共类

必备知识:文件中存储/读取字符串

File.WriteAllText(path, 要存储的str);

File.ReadAllText(path);

序列化:

string jsonStr = JsonUtility.ToJson(obj); File.WriteAllText(path, jsonStr);

反序列化:

string jsonStr = File.ReadAllText(path);

MrTang t3 = JsonUtility.FromJson<MrTang>(jsonStr);

或重载方法

MrTang t2 = JsonUtility.FromJson(jsonStr, typeof(MrTang)) as MrTang;(一般不用)

注意:

1.float序列化时看起来会有一些误差 2.自定义类需要加上序列化特性[System.Serializable] 3.想要序列化私有变量 需要加上特性[SerializeField] 4.JsonUtility不支持字典 5.JsonUtility存储null对象不会是null 而是默认值的数据 6.JsonUtility不能直接读取数据集合,需要间接读取

LitJson

处理Json的第三方库

序列化:

string jsonStr = JsonMapper.ToJson(t);

File.WriteAllText(path, jsonStr);

反序列化:

jsonStr = File.ReadAllText(path);

MrTang2 t2 = JsonMapper.ToObject<MrTang2>(jsonStr);

1.LitJson提供的序列化反序列化方法 JsonMapper.ToJson和ToObject<> 2.LitJson无需加特性 3.LitJson不支持私有变量 4.LitJson支持字典序列化反序列化,不支持Dictionary<int,TValue>,因为键在json默认以字符串形式保存 5.LitJson可以直接将数据反序列化为数据集合 6.LitJson反序列化时 自定义类型需要无参构造 7.LitJson可以准确的保存null类型

JsonUtlity和LitJson不同点

1.JsonUtlity是Unity自带,LitJson是第三方需要引用命名空间 2.JsonUtlity使用时自定义类需要加特性,LitJson不需要 3.JsonUtlity支持私有变量(加特性),LitJson不支持 4.JsonUtlity不支持字典,LitJson支持(但是键只能是字符串) 5.JsonUtlity不能直接将数据反序列化为数据集合(数组字典),LitJson可以 6.JsonUtlity对自定义类不要求有无参构造,LitJson需要 7.JsonUtlity存储空对象时会存储默认值而不是null,LitJson会存null



评论(0)

查看评论列表

暂无评论


发表评论

表情 颜文字
插入代码

个人信息

avatar

24
文章
1
评论
1
用户

近期文章