Version: 2023.2
言語: 日本語
public static string ToJson (object obj);
public static string ToJson (object obj, bool prettyPrint);

パラメーター

obj JSON 形式に変換するオブジェクト
prettyPrint True の場合、読みやすさのため出力を書式設定します。False の場合、最小サイズの出力の書式設定します。デフォルトは False です。

戻り値

string JSON 形式のオブジェクトのデータ

説明

オブジェクトのパブリックフィールドの JSON 表現を生成します。

内部的には、このメソッドは Unity のシリアライザーを使用します。したがって、渡すオブジェクトをシリアライザーでサポートする必要があり、 MonoBehaviour、ScriptableObject や Serializable 属性が適用されるプレーンなクラスか構造体である必要があります。含めようとするフィールドのタイプはシリアライザーによってサポートされなければなりません。private フィールド、static フィールドや NonSerialized 属性を適用されるフィールドのようなサポートされていないフィールドは無視されます。

プレーンなクラスや構造体は、MonoBehaviour や ScriptableObject から派生したクラスと同様にサポートされます。他のタイプはサポートされません。(エディターでのみ、他の型を JSON にシリアライズするために EditorJsonUtility.ToJson を使用できます。)

If the object contains fields with references to other Unity objects, those references are serialized by recording the InstanceID for each referenced object. Because the Instance ID acts like a handle to the in-memory object instance, the JSON string can only be deserialized back during the same session of the Unity engine.

メソッドにプリミティブ型を渡すことは可能ですが、結果に期待できない場合があることに注意してください。プリミティブ型を直接シリアライズする代わりに、メソッドはそれらの public のインスタンスフィールドをシリアライズしようとし、結果として空のオブジェクトが生成されます。同様に、このメソッドに配列を渡しても JSON 配列を生成しません。ですが、オブジェクト public フィールドの配列を持たせることで配列のシリアライズができます。つまり、配列やプリミティブ型の実際の内容をシリアライズするにはクラスや構造体でラップする必要があります。

このメソッドはバックグラウンドスレッドから呼び出すことができます。実行中の間、この関数に渡すオブジェクトは変更しないでください。

Additional resources: MonoBehaviour, ScriptableObject, Object.GetInstanceID

using UnityEngine;

public class PlayerState : MonoBehaviour { public string playerName; public int lives; public float health;

public string SaveToString() { return JsonUtility.ToJson(this); }

// Given: // playerName = "Dr Charles" // lives = 3 // health = 0.8f // SaveToString returns: // {"playerName":"Dr Charles","lives":3,"health":0.8} }