JsonUtility
класс в UnityEngine
Выполнено в:UnityEngine.JSONSerializeModule
Описание
Предоставляет функции для преобразования между объектами и JSON данными.
С помощью этого класса можно получить представление объекта в формате JSON или заполнить объект из строки JSON. Это удобно при работе с веб-службами, которые отправляют и принимают данные JSON, а также когда объекты нужно перевести в сериализуемый вид — например, при сохранении состояния игры.
Функции используют стандартный сериализатор Unity, что означает, что они только сериализуют или десериялизуют поля на объекте, и только тогда, когда поля являются поддерживаемыми типами. Дополнительные сведения о сериализаторе Unity см. в Правила сериализации в инструкции Unity.
В следующем примере показано использование JsonUtility чтобы сохранить и загрузить состояние игры в PlayerPrefs.
using UnityEngine; using System; using System.Collections.Generic;
[Serializable] public class GameState { public int Lives; public int Level; public string CharacterName; public List<string> ItemsCarried; public const string PlayerPrefsKeyName = "SavedGameState";
public void SaveToPlayerPrefs() { // Convert this GameState instance to a JSON string string json = JsonUtility.ToJson(this);
// Save the converted JSON into the PlayerPrefs PlayerPrefs.SetString(PlayerPrefsKeyName, json); PlayerPrefs.Save(); }
public static GameState CreateFromPlayerPrefs() { // If the game was never saved before, the key will not exist; in this case return null if(!PlayerPrefs.HasKey(PlayerPrefsKeyName)) return null;
// Retrieve the saved JSON string from the player prefs string json = PlayerPrefs.GetString(PlayerPrefsKeyName);
// Deserialize the JSON string into a new GameState object and return it return JsonUtility.FromJson<GameState>(json); } }
Объект или тип, который вы передаете функциям, должен быть определенным вами пользовательским типом C#. Это не должен быть примитивный тип, такой как bool или string, или тип коллекции, такой как List<T>, или массив. Если вы хотите сериализовать коллекцию объектов в JSON, вы должны создать class или struct, членом которого является данная коллекция. Аналогичным образом, если вы хотите десериализовать строку JSON, эта строка JSON всегда должна иметь объект на верхнем уровне, а не массив.
Дополнительные ресурсы: EditorJsonUtility, json-serialization.
Статические методы
| Метод | Описание |
|---|---|
| FromJson | Создать объект из его представления JSON. |
| FromJsonOverwrite | Перезапись данных в объекте путем чтения из его представления JSON. |
| ToJson | Формирует представление открытых полей объекта в формате JSON. |