返回
Unity实现Json文件读写的那些事
前端
2023-09-19 09:13:46
Json是一种轻量级文本数据格式,在项目中使用非常广泛。在Unity开发过程中通常用于通讯时的数据交互,以及配置文件的读写等操作。掌握Json文件的读写可以帮助你更加高效地开发游戏。
使用JsonUtility读写Json文件
- 将Json字符串解析成对象:
using UnityEngine;
using System;
public class JsonUtilityExample : MonoBehaviour
{
private void Start()
{
string json = "{ \"name\": \"John\", \"age\": 30 }";
Person person = JsonUtility.FromJson<Person>(json);
Debug.Log(person.name + ", " + person.age); // John, 30
}
[Serializable]
public class Person
{
public string name;
public int age;
}
}
- 将对象序列化为Json字符串:
using UnityEngine;
using System;
public class JsonUtilityExample : MonoBehaviour
{
private void Start()
{
Person person = new Person { name = "John", age = 30 };
string json = JsonUtility.ToJson(person);
Debug.Log(json); // {"name":"John","age":30}
}
[Serializable]
public class Person
{
public string name;
public int age;
}
}
使用StreamWriter和StreamReader读写Json文件
- 将Json对象写入文件:
using UnityEngine;
using System;
using System.IO;
public class JsonFileExample : MonoBehaviour
{
private void Start()
{
Person person = new Person { name = "John", age = 30 };
string json = JsonUtility.ToJson(person);
string path = Application.dataPath + "/person.json";
using (StreamWriter writer = new StreamWriter(path))
{
writer.Write(json);
}
}
[Serializable]
public class Person
{
public string name;
public int age;
}
}
- 从文件中读取Json对象:
using UnityEngine;
using System;
using System.IO;
public class JsonFileExample : MonoBehaviour
{
private void Start()
{
string path = Application.dataPath + "/person.json";
using (StreamReader reader = new StreamReader(path))
{
string json = reader.ReadToEnd();
Person person = JsonUtility.FromJson<Person>(json);
Debug.Log(person.name + ", " + person.age); // John, 30
}
}
[Serializable]
public class Person
{
public string name;
public int age;
}
}
Json文件读写技巧:
- 使用JsonUtility时,可以自定义类来对应Json字符串中的字段,以方便数据的读写。
- 使用StreamWriter和StreamReader时,可以将Json字符串写入文件,或从文件中读取Json字符串,以实现数据的持久化。
- 使用JsonUtility时,可以将Json字符串直接转换为对象,或将对象直接转换为Json字符串,无需手动解析或生成Json字符串。
- 使用StreamWriter和StreamReader时,需要手动解析或生成Json字符串,可能会遇到一些特殊字符转义的问题。