Json文件操作(創(chuàng)建、讀取、解析、修改)
2022/9/11??????點(diǎn)擊:
創(chuàng)建Json文件
如果我們要先生成Json文件的,就可以使用IO命名空間的StreamWriter類:
首先,我們先寫一個(gè)字段類Person,類里面有string類型的“Name”和int類型的“Grade”,然后寫一個(gè)"Data1”數(shù)據(jù)類,里面存放的使我們的字段類Person數(shù)組:
[System.Serializable] class Person { public string Name; public int Grade; } [System.Serializable] class Data1 { public Person[] Person; }然后生成Json數(shù)據(jù),將Json數(shù)據(jù)保存到文件中:
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(); } //寫數(shù)據(jù) public void WriteData() { //新建一個(gè)數(shù)據(jù)類 Data m_Data = new Data(); //新建一個(gè)字段類 進(jìn)行賦值 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; } //將數(shù)據(jù)轉(zhuǎn)成json string js = JsonUtility.ToJson(m_Data); //獲取到項(xiàng)目路徑 string fileUrl = Application.streamingAssetsPath + "\\jsonInfo.txt"; //打開或者新建文檔 using (StreamWriter sw =new StreamWriter(fileUrl)) { //保存數(shù)據(jù) sw.WriteLine(js); //關(guān)閉文檔 sw.Close(); sw.Dispose(); } } }在這里,我們是新建了兩個(gè)數(shù)據(jù)實(shí)體類,一個(gè)叫Data一個(gè)叫Person,它們都有特性:[System.Serializable],也就是序列化,只有加上這個(gè)特性,類里面的數(shù)據(jù)才能正常的轉(zhuǎn)成Json數(shù)據(jù)。
讀取Json文件數(shù)據(jù)
讀取數(shù)據(jù),我們使用IO命名空間下的File類的OpenText()函數(shù)進(jìn)行讀取:
using System.IO; using UnityEngine; public class Demo5 : MonoBehaviour { void Start() { string jsonData = ReadData(); Debug.Log(jsonData); } //讀取文件 public string ReadData() { //string類型的數(shù)據(jù)常量 string readData; //獲取到路徑 string fileUrl = Application.streamingAssetsPath + "\\jsonInfo.json"; //讀取文件 using (StreamReader sr =File.OpenText(fileUrl)) { //數(shù)據(jù)保存 readData = sr.ReadToEnd(); sr.Close(); } //返回?cái)?shù)據(jù) return readData; } }
解析數(shù)據(jù)
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類型的數(shù)據(jù)常量 string readData; //獲取到路徑 string fileUrl = Application.streamingAssetsPath + "\\jsonInfo.json"; //讀取文件 using (StreamReader sr =File.OpenText(fileUrl)) { //數(shù)據(jù)保存 readData = sr.ReadToEnd(); sr.Close(); } //返回?cái)?shù)據(jù) return readData; } }
修改數(shù)據(jù)
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() { //讀取數(shù)據(jù) string jsonData = ReadData(); //解析數(shù)據(jù) Data m_PersonData = JsonUtility.FromJson(jsonData); //找到數(shù)據(jù)修改數(shù)據(jù) foreach (Person item in m_PersonData.Person) { if (item.Name == "User2") { item.Grade = 58; } } //轉(zhuǎn)成json,然后保存數(shù)據(jù) string json = JsonUtility.ToJson(m_PersonData); AlterData(json); } //讀取文件 public string ReadData() { //string類型的數(shù)據(jù)常量 string readData; //獲取到路徑 string fileUrl = Application.streamingAssetsPath + "\\jsonInfo.json"; //讀取文件 using (StreamReader sr = File.OpenText(fileUrl)) { //數(shù)據(jù)保存 readData = sr.ReadToEnd(); sr.Close(); } //返回?cái)?shù)據(jù) return readData; } //修改數(shù)據(jù) public void AlterData(string content) { //獲取到路徑 string fileUrl = Application.streamingAssetsPath + "\\jsonInfo.json"; //讀取文件 using (StreamWriter sr = new StreamWriter(fileUrl)) { //數(shù)據(jù)保存 sr.WriteLine(content); sr.Close(); } } }本文來自網(wǎng)絡(luò),版權(quán)歸原作者所有
- 上一篇:Xml文件操作(創(chuàng)建、讀取、寫入、修改) 2022/9/11
- 下一篇:UNITY3D 創(chuàng)建、讀取、寫入、修改TXT文本文件 2022/9/11