本日はUnityの小ネタ枠です。
Newtonsoft.Jsonを使ってUnityのスクリプトでJSONを扱う方法です。
Newtonsoft.Json
Newtonsoft.JsonはテキストベースのデータフォーマットであるJSONを扱うためのライブラリです。
www.newtonsoft.com
例えば以下のようにインスタンスをJSONフォーマットに変換したり、逆にJSONからインスタンスにデシリアライズできます。
// 型定義 public class RootObject { public string id; public string name; public string height; public string check; } var root = new RootObject(); // JsonConvert.SerializeObject(object value) でシリアライズできる var json = JsonConvert.SerializeObject(root); // JsonConvert.DeserializeObject<T>(string json) でデシリアライズできる var deserialize = JsonConvert.DeserializeObject<RootObject>(_sampleJson);
Newtonsoft.Jsonのインポート
UnityではNewtonsoft.Jsonをパッケージマネージャから取得可能です。
メニューから[Window -> PackageManager]を開きます。

PackageMangaerウィンドウが開くので左上の[+]ボタンのプルダウンから[Add package from git URL..]を選択します。

gitURLの入力欄が開くので、以下のURLを入力して[Add]ボタンをクリックします。
com.unity.nuget.newtonsoft-json

これでNewtonsoft.Jsonのインポートが完了しました。

サンプルスクリプト
Newtonsoft.Jsonを使ってインスタンスのシリアライズとデシリアライズを行う以下のサンプルスクリプトを作成しました。
・NewtonsoftJsonTest.cs
using UnityEngine; using Newtonsoft.Json; public class NewtonsoftJsonTest : MonoBehaviour { // デシリアライズするJSONデータ [SerializeField, TextArea(0, 10)] private string _sampleJson; public class RootObject { public string id; public string name; public string height; public string check; } // インスタンスをJSONにシリアライズするサンプルコード [ContextMenu("Serialize")] public void Serialize() { var root = new RootObject { id = "1", name = "hoge", height = "180", check = "true" }; // JsonConvert.SerializeObject(object value) でシリアライズできる var json = JsonConvert.SerializeObject(root); Debug.Log(json); } // JSONをインスタンスにデシリアライズするサンプルコード [ContextMenu("Deserialize")] public void Deserialize() { // JsonConvert.DeserializeObject<T>(string json) でデシリアライズできる var root = JsonConvert.DeserializeObject<RootObject>(_sampleJson); Debug.Log($"id:{root.id}, name:{root.name}, height:{root.height}, check:{root.check}"); } }
コンテキストメニューから[Serialize]を行うと以下の通りインスタンスの情報がJSONフォーマットのテキストで出力されました。


コンテキストメニューから[Deserialize]を行うと以下の通りJSONフォーマットのテキストからインスタンスを再生成できました。

