JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式存储和表示数据,简洁和清晰的层次结构使JSON成为理想的数据交换语言,易于读者阅读和编写,同时也易于机器解析和生成,并有效的提高网络传输效率
1:写入JSON数据
生成JSON数据实例代码如下
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test_15_1 : MonoBehaviour { void Start() { WriteData(); } //写数据 public void WriteData() { //新建一个数据类 Data m_Data = new Data(); //新建一个字段类 进行赋值 m_Data.Person = new Person[3]; //添加数据 Person p1 = new Person(); p1.Name = "张三"; p1.Grade = 98; m_Data.Person[0] = p1; Person p2 = new Person(); p2.Name = "李四"; p2.Grade = 95; m_Data.Person[1] = p2; Person p3 = new Person(); p3.Name = "王五"; p3.Grade = 97; m_Data.Person[2] = p3; //将数据转成json string js = JsonUtility.ToJson(m_Data); //显示Json数据 Debug.Log(js); } } [System.Serializable] class Person { public string Name; public int Grade; } [System.Serializable] class Data { public Person[] Person; }
2:将JSON数据保存到本地文件夹
下面的代码将JSON中数据以文本格式保存到本地文件夹
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test_15_2 : MonoBehaviour { void Start() { WriteData(); } //写数据 public void WriteData() { //新建一个数据类 Data m_Data = new Data(); //新建一个字段类 进行赋值 m_Data.Person = new Person[3]; //添加数据 Person p1 = new Person(); p1.Name = "张三"; p1.Grade = 98; m_Data.Person[0] = p1; Person p2 = new Person(); p2.Name = "李四"; p2.Grade = 95; m_Data.Person[1] = p2; Person p3 = new Person(); p3.Name = "王五"; p3.Grade = 97; m_Data.Person[2] = p3; //将数据转成json string js = JsonUtility.ToJson(m_Data); //保存到 C盘的 Temp文件夹 //下面的代码改变保存路径即可 string fileUrl = @"c:\Temp\jsonInfo.txt"; //打开或者新建文档 StreamWriter sw = new StreamWriter(fileUrl); //保存数据 sw.WriteLine(js); //关闭文档 sw.Close(); } } [System.Serializable] class Person { public string Name; public int Grade; } [System.Serializable] class Data { public Person[] Person; }
3:读取JSON数据
读取JSON数据用到了之前讲解过的文件的输入与输出,将使用StreamReader从文件夹中读取流数据
using System.IO; using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test_15_3 : MonoBehaviour { void Start() { string jsonData = ReadData(); Debug.Log(jsonData); } //读取文件 public string ReadData() { //获取到路径 string fileUrl = @"c:\Temp\jsonInfo.txt"; //读取文件 StreamReader str = File.OpenText(fileUrl); //string类型的数据常量 //数据保存 string readData = str.ReadToEnd(); str.Close(); //返回数据 return readData; } }
4:解析JSON数据
解析JSON数据,需要生成与JSON数据类型相同的字段,如果JSON数据中有字段Person,Name,Grade,Person字段是一个数组,那么根节点就是一个带有Person数组字段的类,然后这个Person字段本身也是一个类,里面有Name和Grade字段 解析JSON数据代码如下
using System.IO; using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test_15_4 : MonoBehaviour { void Start() { //首先获取到json数据 string json = ReadData(); //将json数据传递给ParseData函数进行解析 ParseData(json); } //读取文件 public string ReadData() { //获取到路径 string fileUrl = @"c:\Temp\jsonInfo.txt"; //读取文件 StreamReader str = File.OpenText(fileUrl); //string类型的数据常量 //数据保存 string readData = str.ReadToEnd(); str.Close(); //返回数据 return readData; } //解析Json数据 public void ParseData(string jsonData) { //数据解析并把数据保存到m_PersonData1 变量中 Data m_PersonData = JsonUtility.FromJson<Data>(jsonData); foreach (var item in m_PersonData.Person) { Debug.Log(item.Name); Debug.Log(item.Grade); } } }
创作不易 觉得有帮助请点赞关注收藏~~~