数据持久化-JsonUtlity
Contents
JsonUtlity是什么?
- JsonUtlity 是Unity自带的用于解析Json的公共类
- 它可以将内存中对象序列化为Json格式的字符串
- 将Json字符串反序列化为类对象
在文件中读取字符串
把字符串存入文件中
File.WriteAllText(Application.persistentDataPath + "/Test.json", "阿哈哈哈哈");在指定路径的文件中读取字符串
string str = File.ReadAllText(Application.persistentDataPath + "/Test.json");//阿哈哈哈哈使用JsonUtlity进行序列化
//JsonUtlity序列化方法 可以把对象 转为json字符串
string jsonStr = JsonUtility.ToJson(t);
//将字符串 保存到文件中
File.WriteAllText(Application.persistentDataPath + "/test.json", jsonStr);注意:
- float序列化时看起来会有一些误差
- 成员中的自定义类需要加上序列化特性[System.Serializable]
- 想要序列化私有变量 需要加上特性[SerializeField]
- JsonUtility不支持字典
- JsonUtlity存储null对象不会是null 而是默认值的数据
使用JsonUtlity进行反序列化
//读取路径中的json
jsonStr = File.ReadAllText(Application.persistentDataPath + "/test.json");
//使用Json字符串内容 转换成类对象
Test t2 = JsonUtility.FromJson(jsonStr, typeof(Test)) as Test;
//使用泛型的方式反序列化
Test t3 = JsonUtility.FromJson<Test>(jsonStr);注意:
- 如果Json中数据少了,读取到内存中类对象中时不会报错
- 文本编码格式需要是UTF-8 不然无法加载
- JsonUtlity不能直接将数据反序列化为数据集合