Unity

C#でJSONを扱う方法:JsonUtilityとNewtonsoftの比較

C#でJSONを扱う方法:JsonUtilityとNewtonsoftの比較

この記事はAIによって自動生成されました(検証済みC#コードを含む)。


C#でJSONを扱う方法:JsonUtilityとNewtonsoftの比較

この記事では、UnityでJSONデータを扱うための二つの主要な方法、JsonUtilityNewtonsoft.Jsonを比較します。これにより、どちらの方法があなたのプロジェクトに適しているかがわかります。

1. 導入:この技術が必要な理由

ゲーム開発において、データの保存や通信は非常に重要です。特に、ゲームの設定やプレイヤーのデータをJSON形式で扱うことは一般的です。初心者の方は、どのライブラリを使うべきか迷うことが多いですが、この記事を通じてそれぞれのメリットとデメリットを理解することができます。

2. 基礎理論とC#構文の理解

JSON(JavaScript Object Notation)は、軽量なデータ交換フォーマットです。C#では、Unityの標準機能であるJsonUtilityと、外部ライブラリのNewtonsoft.Jsonを使ってJSONデータを扱うことができます。それぞれの特徴を理解することで、適切な選択ができるようになります。

JsonUtility

Unityに組み込まれているJsonUtilityは、シンプルな構造のデータを扱うのに最適です。以下のように使用します。

// JsonUtilityを使ったサンプルコード
[System.Serializable]
public class PlayerData {
    public string playerName;
    public int playerScore;
}

void SaveData() {
    PlayerData data = new PlayerData();
    data.playerName = "Player1";
    data.playerScore = 100;
    string json = JsonUtility.ToJson(data);
    Debug.Log(json);
}

💡ヒント:JsonUtilityは、System.Serializable属性が付与されたクラスのみをサポートします。

Newtonsoft.Json

Newtonsoft.Json(別名 Json.NET)は、より複雑なデータ構造を扱うための強力なライブラリです。以下のように使用します。

// Newtonsoft.Jsonを使ったサンプルコード
using Newtonsoft.Json;

public class PlayerData {
    public string playerName;
    public int playerScore;
}

void SaveData() {
    PlayerData data = new PlayerData();
    data.playerName = "Player1";
    data.playerScore = 100;
    string json = JsonConvert.SerializeObject(data);
    Debug.Log(json);
}

💡ヒント:Newtonsoft.Jsonを使用するには、NuGetパッケージマネージャーからインストールが必要です。

3. Unityでの実装手順

  1. プロジェクトにJson.NETをインストールする(必要な場合)。
  2. データクラスを作成し、必要なフィールドを定義する。
  3. データをJSON形式にシリアライズし、デバッグログなどで確認する。

4. ゲーム制作での応用例

JSONデータを使って、プレイヤーの設定やセーブデータを管理することができます。例えば、プレイヤーのスコアやレベルをJSON形式で保存し、ゲーム再開時にそれを読み込むことが可能です。

応用例①:セーブデータの管理

プレイヤーの進行状況をJSON形式で保存し、次回のプレイ時に読み込むことで、シームレスなゲーム体験を実現します。

void SavePlayerData() {
    PlayerData data = new PlayerData();
    data.playerName = "Player1";
    data.playerScore = 100;
    string json = JsonUtility.ToJson(data);
    System.IO.File.WriteAllText("playerData.json", json);
}

void LoadPlayerData() {
    string json = System.IO.File.ReadAllText("playerData.json");
    PlayerData data = JsonUtility.FromJson(json);
    Debug.Log(data.playerName + ", Score: " + data.playerScore);
}

5. よくあるエラーと対処法

  • JsonException: JSON形式が不正 → JSONの構造を確認。
  • FileNotFoundException: ファイルが見つからない → パスを確認。

6. まとめ

この記事で紹介したJsonUtilityNewtonsoft.Jsonを使用することで、Unityでのデータ管理が容易になります。プロジェクトの要件に応じて、適切な方法を選択してください。

7. 関連リンク


🧩 関連記事

  • Unityにおけるデータシリアライズの基礎
  • JSONフォーマットの理解と使用例
  • 外部ライブラリを使ったUnityでのデータ管理

🪄 参考元: Unity公式マニュアル