Json文件操作(创建、读取、解析、修改)
2023-9-14 21:40:28 点击:
创建Json文件
如果我们要先生成Json文件的,就可以使用IO命名空间的StreamWriter类:
首先,我们先写一个字段类Person,类里面有string类型的“Name”和int类型的“Grade”,然后写一个"Data1”数据类,里面存放的使我们的字段类Person数组:
[System.Serializable] class Person { public string Name; public int Grade; } [System.Serializable] class Data1 { public Person[] Person; }然后生成Json数据,将Json数据保存到文件中:
using System.IO; using UnityEngine; [System.Serializable] class Person { public string Name; public int Grade; } [System.Serializable] class Data { public Person[] Person; } public class Demo5 : MonoBehaviour { void Start() { WriteData(); } //写数据 public void WriteData() { //新建一个数据类 Data m_Data = new Data(); //新建一个字段类 进行赋值 m_Data.Person = new Person[5]; for (int i = 0; i < 5; i++) { Person m_Person = new Person(); m_Person.Name = "User" + i; m_Person.Grade = i + 50; m_Data.Person[i] = m_Person; } //将数据转成json string js = JsonUtility.ToJson(m_Data); //获取到项目路径 string fileUrl = Application.streamingAssetsPath + "\\jsonInfo.txt"; //打开或者新建文档 using (StreamWriter sw =new StreamWriter(fileUrl)) { //保存数据 sw.WriteLine(js); //关闭文档 sw.Close(); sw.Dispose(); } } }在这里,我们是新建了两个数据实体类,一个叫Data一个叫Person,它们都有特性:[System.Serializable],也就是序列化,只有加上这个特性,类里面的数据才能正常的转成Json数据。
读取Json文件数据
读取数据,我们使用IO命名空间下的File类的OpenText()函数进行读取:
using System.IO; using UnityEngine; public class Demo5 : MonoBehaviour { void Start() { string jsonData = ReadData(); Debug.Log(jsonData); } //读取文件 public string ReadData() { //string类型的数据常量 string readData; //获取到路径 string fileUrl = Application.streamingAssetsPath + "\\jsonInfo.json"; //读取文件 using (StreamReader sr =File.OpenText(fileUrl)) { //数据保存 readData = sr.ReadToEnd(); sr.Close(); } //返回数据 return readData; } }
解析数据
using System.IO; using UnityEngine; [System.Serializable] class Person { public string Name; public int Grade; } [System.Serializable] class Data { public Person[] Person; } public class Demo5 : MonoBehaviour { void Start() { string jsonData = ReadData(); Data m_PersonData = JsonUtility.FromJson(jsonData); foreach (Person item in m_PersonData.Person) { Debug.Log(item.Name); Debug.Log(item.Grade); } } //读取文件 public string ReadData() { //string类型的数据常量 string readData; //获取到路径 string fileUrl = Application.streamingAssetsPath + "\\jsonInfo.json"; //读取文件 using (StreamReader sr =File.OpenText(fileUrl)) { //数据保存 readData = sr.ReadToEnd(); sr.Close(); } //返回数据 return readData; } }
修改数据
using System.IO; using UnityEngine; [System.Serializable] class Person { public string Name; public int Grade; } [System.Serializable] class Data { public Person[] Person; } public class Demo5 : MonoBehaviour { void Start() { //读取数据 string jsonData = ReadData(); //解析数据 Data m_PersonData = JsonUtility.FromJson(jsonData); //找到数据修改数据 foreach (Person item in m_PersonData.Person) { if (item.Name == "User2") { item.Grade = 58; } } //转成json,然后保存数据 string json = JsonUtility.ToJson(m_PersonData); AlterData(json); } //读取文件 public string ReadData() { //string类型的数据常量 string readData; //获取到路径 string fileUrl = Application.streamingAssetsPath + "\\jsonInfo.json"; //读取文件 using (StreamReader sr = File.OpenText(fileUrl)) { //数据保存 readData = sr.ReadToEnd(); sr.Close(); } //返回数据 return readData; } //修改数据 public void AlterData(string content) { //获取到路径 string fileUrl = Application.streamingAssetsPath + "\\jsonInfo.json"; //读取文件 using (StreamWriter sr = new StreamWriter(fileUrl)) { //数据保存 sr.WriteLine(content); sr.Close(); } } }文章内容整理来自网络,版权归原作者所有,如有问题,请联系我们!
- 上一篇:没有啦
- 下一篇:Xml文件操作(创建、读取、写入、修改) 2023/9/13