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);
}
}
}
创作不易 觉得有帮助请点赞关注收藏~~~