Unity数据持久化 之 LitJson序列化与反序列化

语法规则可以看这篇文章:Unity数据持久化 之 Json 语法速通-CSDN博客

1.LitJson是什么

LitJSON - HomeRelease LitJSON 0.19.0 · LitJSON/litjson · GitHub

LitJSON是一个net库,用于处理与JSON (JavaScript Object Notation)字符串之间的转换

优点:小巧、快速和易于使用

快速而精简,没有外部依赖

只有几个类,可以很容易地嵌入到您自己的代码中,或者是一个非常小的程序集,可以随代码一起发布

代码是高度可移植的,这通常使得它很容易适应新的平台

L itJson和sonUtility的区别

Unity数据持久化 之 Json序列化与反序列化-CSDN博客

导入代码包

举例的数据及实例化

注意里面的字典,JsonUtility是不能存入字典的(当然,存入私有数据需要加序列化关键词。存入null值时会有默认值,不做演示)

cs 复制代码
public class Person {
    public int age;
    public int[] id = { 1, 2, 3 };
    public Dictionary<string, int> dic = new Dictionary<string, int>();
    public Children children;
    public List<Teacher> teacher;
}


public class Children {
    public bool isBoy;
}


public class Teacher {
    public string course;
    public Teacher(string c) {
        course = c;
    }
}
cs 复制代码
  Person person = new Person();
  person.age = 99;
  person.dic.Add("男生数量", 10);
  person.dic.Add("女生数量", 9);
  person.children = new Children(); // 初始化 Children 对象
  person.children.isBoy = true;
  person.teacher = new List<Teacher>(); // 初始化 Teacher 列表
  person.teacher.Add(new Teacher("语文老师"));
  person.teacher.Add(new Teacher("数学老师"));

2.序列化

引入命名空间

cs 复制代码
 JsonMapper.ToJson(person);
cs 复制代码
   // 将 JSON 数据保存到文件
   string filePath = Path.Combine(Application.persistentDataPath, "example.Litjson");
   File.WriteAllText(filePath, Litjson);
   Debug.Log($"JSON 数据已保存至:{filePath}");

打开保存到本地的文件,可以非常完美的将字典保存了,只是编码怪怪的

不过,读字典是能读了,但是必须要string类型的键,不然你看文件中dic键值对都是双引号 ,如果你的键不是string类型吗,这在反序列化时是不被许可的

3.反序列化

索引器读

cs 复制代码
 //将 JSON 文件读取并返回成一个字符串
 string exampleLitjson = File.ReadAllText(Application.persistentDataPath+ "/example.Litjson");
 JsonData jsonData = JsonMapper.ToObject(exampleLitjson);
 print(jsonData["age"]);

泛型读

cs 复制代码
person = JsonMapper.ToObject<Person>(exampleLitjson);

还有一件事:如果序列化的类没有默认构造函数会报错,我没有声明有参构造顶掉无参构造,所以没报错,切记切记

相关推荐
Thomas_YXQ3 小时前
Unity3D游戏内存优化指南
游戏·unity·职场和发展·性能优化·蓝桥杯·游戏引擎·unity3d
chillxiaohan3 小时前
Unity接入Steamworks.NET实现通信功能
unity
枯萎穿心攻击12 小时前
响应式编程入门教程第二节:构建 ObservableProperty<T> — 封装 ReactiveProperty 的高级用法
开发语言·unity·c#·游戏引擎
X_StarX20 小时前
【Unity笔记02】订阅事件-自动开门
笔记·学习·unity·游戏引擎·游戏开发·大学生
霸王•吕布1 天前
游戏引擎中顶点着色&像素着色
游戏引擎·顶点着色器·像素着色器·顶点颜色·顶点uv·顶点法向
Thomas_YXQ1 天前
Unity URP法线贴图实现教程
开发语言·unity·性能优化·游戏引擎·unity3d·贴图·单一职责原则
徐子竣1 天前
[学习记录]Unity-Shader-几何着色器
unity·游戏引擎·着色器
EQ-雪梨蛋花汤2 天前
【Part 3 Unity VR眼镜端播放器开发与优化】第四节|高分辨率VR全景视频播放性能优化
unity·音视频·vr
与火星的孩子对话2 天前
Unity进阶课程【六】Android、ios、Pad 终端设备打包局域网IP调试、USB调试、性能检测、控制台打印日志等、C#
android·unity·ios·c#·ip
幻世界2 天前
【Unity智能模型系列】Unity + MediaPipe + Sentis + ArcFace模型:构建高效人脸识别比对系统
unity·游戏引擎