返回

Unity实现Json文件读写的那些事

前端

Json是一种轻量级文本数据格式,在项目中使用非常广泛。在Unity开发过程中通常用于通讯时的数据交互,以及配置文件的读写等操作。掌握Json文件的读写可以帮助你更加高效地开发游戏。

使用JsonUtility读写Json文件

  1. 将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;
    }
}
  1. 将对象序列化为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文件

  1. 将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;
    }
}
  1. 从文件中读取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字符串,可能会遇到一些特殊字符转义的问题。