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
