Содержание:
1. Формат обмена данными JSON
Данная наработка служит для упрощения разработки HTTP сервисов и HTTP запросов.
При разработке HTTP сервисов и при работе с запросами зачастую требуется передавать в теле запроса некоторые данные. При получении или отправке данных в HTTP запросе почти всегда используется формат данных JSON.
JSON (JavaScript Object Notation) – это текстовый формат обмена данными, широко используемый в веб-приложениях.
По сути, JSON – это строка в определенном формате и поэтому так же, как и с любой другой строкой, с ней можно работать при помощи функций работы со строками, такими как СтрНайти (), СтрЗаменить () и другими. В теории можно написать функцию, которая из произвольной строки будет формировать строку в формате данных JSON.
Но так как данный формат достаточно популярен, в платформе 1С с некоторых пор есть встроенные функции для работы с данным форматом.
С помощью данных функций платформа позволяет автоматически сгенерировать строку в JSON формате, принимая на вход значения следующих типов:
· Строка;
· Число;
· Булево;
· Дата;
· Массив (обычный и фиксированный);
· Структура (обычная и фиксированная);
· Соответствие (обычное и фиксированное).
Ниже приведена функция, преобразующая структуру в строку JSON.
Функция, которая преобразует структуру в строку JSON.
2. Сериализация в JSON
Основные действия в данной функции выполняет метод глобального контекста ЗаписатьJSON ().
В данный метод передается объект типа запись JSON, который был подготовлен для записи при помощи метода УстановитьСтроку (), а также параметр ТелоJSON – та самая структура, которая должна быть преобразована.
Данное преобразование называется в JSON Сериализацией.
3. Десериализация в JSON
Аналогичным образом можно выполнить обратное преобразование, т.е. преобразовать строку JSON в структуру (или любой другой тип, который может быть записан в формат данных JSON).
Ниже представлена функция выполняющая обратное преобразование (десериализацию в JSON).
Функция для десериализации в JSON
В качестве входного параметра в нее передается строка в JSON. При помощи метода глобального контекста ПрочитатьJSON () выполняется преобразование в структуру.
Данные функции можно использовать при работе с запросами для быстрой и простой сериализации и десериализации.
4. Дата в JSON
Следует уделить особое внимание десериализации в JSON типа «Дата». Данный тип без проблем сериализуются в JSON, а вот с десериализацией иногда могут возникнуть трудности. JSON воспринимает тип «Дата» как строку. Для правильного формата даты при сериализации в JSON у метода ЗаписатьJSON () можно воспользоваться параметром «НастройкиСериализации».
Данный параметр, позволяет указать, в каком виде (UTC, локальная и т. д.) и в каком формате формате (ISO, JavaScript или Microsoft) будет записана дата.
Сериализация JSON типа Дата
Строка JSON после такой сериализации будет выглядеть следующим образом:
Пример строки JSON
При чтении даты из JSON всё обстоит немного по-другому. Для корректного отображения в параметр ИменаСвойствСоЗначениямиДата нужно передать те свойства JSON, значения которых нужно преобразовать в дату 1С:Предприятия (тип Дата). А в параметр ОжидаемыйФорматДаты необходимо задать формат этих данных в JSON.
Чтение даты из JSON
Данный код десериализует строку JSON представленную выше в правильном формате.
Однако если теперь передавать в данную процедуру другую строку JSON (например, дата рождения будет в другом формате), будет вызвано исключение.
В такой ситуации для большей универсальности можно добавить свойства JSON в массив, который в дальнейшем будет обработан с помощью функции восстановления. И десериализовать даты JSON именно в этой функции.
Специалист компании «Кодерлайн»
Айдар Фархутдинов