Общие принципы десериализации также связаны с использованием механизма XDTO. В частности:
Десериализация прикладных типов из JSON-документа происходит с помощью метода ПрочитатьJSON() объекта глобального контекста СериализаторXDTO. При этом может быть либо указан тип считываемого значения, либо нет – в зависимости от того, указан ли тип прикладного объекта при сериализации.
Например, чтение JSON-документа, содержимое которого показано в листинге 1.46, может быть выполнено без указания типа считываемого значения (листинг 1.49).
Листинг 1.49. Пример десериализации элемента справочника из JSON-документа без указания типа
&НаСервереБезКонтекста
Процедура ДесериализацияПрикладныхТиповНаСервере()
// Создать объект чтения и открыть файл, из которого будет выполняться чтение.
Чтение = Новый ЧтениеJSON;
Чтение.ОткрытьФайл("c:\temp\SerialisationXDTO.json");
// Выполнить чтение данных в структуру Данные с помощью объекта чтения (Чтение).
Данные = СериализаторXDTO.ПрочитатьJSON(Чтение);
// Завершить работу с файлом.
Чтение.Закрыть();
// Вывести результат чтения в сообщение.
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Код: " + Данные.Code + ", ФИО: " + Данные.Description + ", ДР: "+ Данные.ДатаРождения +
", Детей: " + Данные.КоличествоДетей + ", Работает: " + Данные.Работает + ", Стаж: " + Данные.Стаж;
Сообщение.Сообщить();
КонецПроцедуры
Результат чтения элемента справочника Сотрудники из JSON-документа будет выглядеть следующим образом (рис. 1.9).
Рис. 1.9. Чтение элемента справочника из JSON-документа
Если же тип прикладного объекта не указан при сериализации (см. листинги 1.47, 1.48), то при чтении JSON-документа тип считываемого значения должен быть указан в методе ПрочитатьJSON() объекта СериализаторXDTO (листинг 1.50).
Листинг 1.50. Пример десериализации элемента справочника из JSON-документа с указанием типа
&НаСервереБезКонтекста
Процедура ДесериализацияПрикладныхТиповНаСервере()
// Создать объект чтения и открыть файл, из которого будет выполняться чтение.
Чтение = Новый ЧтениеJSON;
Чтение.ОткрытьФайл("c:\temp\SerialisationXDTO_2.json");
// Выполнить чтение данных в структуру Данные с помощью объекта чтения (Чтение).
Данные = СериализаторXDTO.ПрочитатьJSON(Чтение, Тип("СправочникОбъект.Сотрудники"));
// Завершить работу с файлом.
Чтение.Закрыть();
// Вывести результат чтения в сообщение.
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Код: " + Данные.Code + ", ФИО: " + Данные.Description + ", ДР: "+ Данные.ДатаРождения +
", Детей: " + Данные.КоличествоДетей + ", Работает: " + Данные.Работает + ", Стаж: " + Данные.Стаж;
Сообщение.Сообщить();
КонецПроцедуры