以下の内容はhttps://bluebirdofoz.hatenablog.com/entry/2024/12/23/233911より取得しました。


Newtonsoft.Jsonを使ってUnityのスクリプトでJSONを扱う

本日は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フォーマットのテキストからインスタンスを再生成できました。




以上の内容はhttps://bluebirdofoz.hatenablog.com/entry/2024/12/23/233911より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14