JsonUtility.ToJson
Declaration
public static string ToJson(object obj);public static string ToJson(object obj, bool prettyPrint);Параметры
| Параметр | Описание |
|---|---|
| Объект | Объект для преобразования в форму JSON. |
| prettyPrint | Если true, форматировать вывод для удобства чтения. Если false, форматировать вывод для минимального размера. По умолчанию false. |
Возвращаемое значение
строка Данные объекта в JSON формат.
Описание
Формирует представление открытых полей объекта в формате JSON.
Внутренне этот метод использует серийизатор Unity. Передаваемый объект и все его поля должны соответствовать требованиям для серийизации серийизатором Unity. Полный список этих требований см. в Правила сериализации в руководстве.ToJson поддерживает любой обычный класс или структуру, а также классы, производные от MonoBehaviour или ScriptableObject. Другие типы движка не поддерживаются. Только в редакторе можно использовать EditorJsonUtility.ToJson для серийного номера других типов двигателей JSON.
Если объект содержит поля со ссылками на другие объекты Unity, эти ссылки сериализируются путем записи InstanceID для каждого объекта, на который делается ссылка. Поскольку экземпляр ID действует как указатель к экземпляру объекта в памяти, строка JSON может быть десериализирована только во время той же сессии движка Unity.
Обратите внимание, что, хотя ToJson принимает примитивные типы, он не сериализует их напрямую, а пытается сериализовать их открытые поля экземпляра, из-за чего получается пустой объект. Точно так же передача массива даёт не JSON-массив с каждым элементом, а объект с открытыми полями самого объекта-массива (а их нет). Чтобы сериализовать фактическое содержимое массива или примитивного типа, оберните его в класс или структуру.ToJson может быть вызвана из фоновых потоков. Вы не должны изменять объект, который вы передаете этой функции, пока она еще выполняется.
Дополнительные ресурсы: 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} }