Version: 2022.3
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 属性的普通类/结构。要包含的字段的类型必须受序列化器支持;不受支持的字段以及私有字段、静态字段和应用了 NonSerialized 属性的字段会被忽略。

支持任何普通类或结构,以及派生自 MonoBehaviour 或 ScriptableObject 的类。不支持其他引擎类型。(只能在 Editor 中使用 EditorJsonUtility.ToJson 将其他引擎类型序列化为 JSON)。

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.

请注意,虽然可以将原始类型传递到此方法,但是结果可能不同于预期;此方法不会直接序列化,而是尝试序列化其公共实例字段,从而生成空对象作为结果。同样,将数组传递到此方法不会生成包含每个元素的 JSON 数组,而是生成一个对象,其中包含数组对象本身的公共字段(都无值)。若要序列化数组或原始类型的实际内容,需要将它放入类或结构中。

此方法可以从后台线程进行调用。在此函数仍在执行期间,不应更改传递给它的对象。

See Also: 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} }