在 Unity 中使用 Json 库,有着多种方案

  1. UnityEngine.JsonUtility
  2. Newtonsoft.Json.JsonConvert
  3. System.Text.Json.JsonSerializer
Newtonsoft.Json System.Text.Json UnityEngine.JsonUtility
JsonConvert JsonSerializer JsonUtility
序列化 JsonConvert.SerializeObject(object); JsonSerializer.Serialize(object); JsonUtility.ToJson(object, isPrettyPrint);
反序列化 JsonConvert.DeserializeObject(json); JsonSerializer.Deserialize(json); JsonUtility.FromJson(json);
设置 new JsonSerializerSettings { Formatting = Formatting.Indented }; new JsonSerializerOptions { WriteIndented = true };

UnityEngine.JsonUtility

JsonUtility 是 Unity 引擎内置的一个轻量级 JSON 工具类,位于 UnityEngine 命名空间下。它提供了简单的 API 来进行对象与 JSON 字符串之间的转换。

示例代码:

[Serializable]
public class PlayerData
{
    public string name;
    public int level;
    public float health;
}

// 序列化
PlayerData data = new PlayerData { name = "Alice", level = 5, health = 100f };
string json = JsonUtility.ToJson(data);

// 反序列化
PlayerData loadedData = JsonUtility.FromJson<PlayerData>(json);

Newtonsoft.Json.JsonConvert

Newtonsoft.Json(又称 Json.NET)是目前功能最全面、社区活跃度最高的 JSON 库之一

安装方式:

可以通过 Unity 的 NuGet 插件安装,或者手动导入 DLL 文件

示例代码:

PlayerData data = new PlayerData { name = "Bob", level = 10, health = 85.5f };

// 序列化
string json = JsonConvert.SerializeObject(data, Formatting.Indented);

// 反序列化
PlayerData loadedData = JsonConvert.DeserializeObject<PlayerData>(json);

System.Text.Json.JsonSerializer

System.Text.Json 是微软在 .NET Core 3.0 中推出的原生高性能 JSON 处理库,旨在替代 Newtonsoft.Json,提供更安全、更快的 JSON 操作能力。

安装

// TODO
⚠️ 注意:Unity 对 System.Text.Json 的支持取决于你使用的 .NET 运行时版本。你需要确保你的 Unity 项目使用的是 .NET Standard 2.1.NET Framework 4.x Equivalent,并且目标平台支持该库。

示例代码:

PlayerData data = new PlayerData { name = "Charlie", level = 15, health = 70.0f };

// 序列化
var options = new JsonSerializerOptions { WriteIndented = true };
string json = JsonSerializer.Serialize(data, options);

// 反序列化
PlayerData loadedData = JsonSerializer.Deserialize<PlayerData>(json, options);

引用