Json文件操作(創建、讀取、解析、修改)
2022/9/11??????點擊:
創建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文件操作(創建、讀取、寫入、修改) 2022/9/11
- 下一篇:UNITY3D 創建、讀取、寫入、修改TXT文本文件 2022/9/11