概要
UnityでJSONを扱いたい時の選択肢にはJsonUtilityやUtf8Jsonなどがあります。今回はそれらではなくNewtonsoft.Jsonについての記事です。
本文
導入
Unityのバージョンによっては標準でNewtonsoft.Jsonが入っています。もし入ってなかった場合は
①メニューからWindows > PackageManager
②左上の+ボタン > Add Package from git URL
③URL欄に「com.unity.nuget.newtonsoft-json」と入力して「Add」を押す
この手順でNewtonsoft.Jsonが使えるようになります。
コード
以下にシリアライズ&デシリアライズのサンプルコードを載せます。
Playerクラス型の実体を一度Json型に変換してすぐPlayerクラス型に戻しています。
最後にこの変換を経た内容をログに表示するサンプルコードです。
public class Player
{
public string Name;
public int Level;
public int Health;
}
using Newtonsoft.Json;
using UnityEngine;
public class GameManager : MonoBehaviour
{
void Start()
{
var player = new Player();
player.Name = "Player 1";
player.Level = 1;
player.Health = 100;
// PlayerクラスからJSONを生成
var json = JsonConvert.SerializeObject(player);
// JSONからPlayerクラスを生成
var model = JsonConvert.DeserializeObject<Player>(json);
Debug.Log("Name: " + model.Name);
Debug.Log("Level: " + model.Level);
Debug.Log("Health: " + model.Health);
}
}
補足
APIでプロパティ名と違うキーを扱いたい時は以下のように記述します。
public class Player
{
[JsonProperty("player_name")]
public string Name;
[JsonProperty("player_level")]
public int Level;
[JsonProperty("player_health")]
public int Health;
}