MRが楽しい

MRやVRについて学習したことを書き残す

RiderでJsonのサンプルからシリアライズ用のクラスを作成する

本日は Rider の小ネタ枠です。
RiderでJsonのサンプルからシリアライズ用のクラスを作成する方法を記事にします。

Paste Special: JSON as Classes

実際の Json 文字列を基にシリアライズ用のクラスやレコードを作成する Rider の機能です。
www.jetbrains.com

例えば以下のような文字列を Ctrl + V キーでクリップボードにコピーします。

{ "id" : "1", "name" : "suzuki", "height" : "170.0", "check" : "true" }

この状態で Rider のエディター上で右クリックから[Copy / Paste Special -> Paste Special: JSON as Classes]を実行します。

これだけで以下のようにシリアライズ用のクラスを生成できます。

ただし筆者が試したところ、JsonUtility.FromJson でデシリアライズするには本クラスはそのままでは利用できず、以下のように{ get; set; }を削除する必要がありました。

{ get; set; }を記述した場合、C# の自動実装により別名のフィールドが生成されるためと思われます。
ufcpp.net

また Rider のバージョンによっては本機能が利用できないものもあるようです。
筆者環境ではバージョン 2023.1 以降で利用可能でした。

サンプルコード

以下のサンプルスクリプトを作成して Unity 上で動作を確認してみました。
・JsonUtilityTest.cs

using UnityEngine;

public class JsonUtilityTest : MonoBehaviour
{
    [SerializeField, TextArea(0, 10)]
    private string _sampleJson;
    
    [ContextMenu("Deserialize")]
    public void Deserialize()
    {
        // JsonUtility.FromJson<T>(string json) でデシリアライズできる
        var root = JsonUtility.FromJson<RootObject>(_sampleJson);
        Debug.Log(root.id);
    }
    public class RootObject
    {
        public string id;
        public string name;
        public string height;
        public string check;
    }
}