15.01.2021 Айдар Фархутдинов 74608
Работа с форматом данных JSON (Сериализация и...

Содержание:

1.       Формат обмена данными JSON

2.       Сериализация в JSON

3.       Десериализация в JSON

4.       Дата в JSON 


1.      Формат обмена данными JSON


Данная наработка служит для упрощения разработки HTTP сервисов и HTTP запросов.


При разработке HTTP сервисов и при работе с запросами зачастую требуется передавать в теле запроса некоторые данные. При получении или отправке данных в HTTP запросе почти всегда используется формат данных JSON.


JSON (JavaScript Object Notation) – это текстовый формат обмена данными, широко используемый в веб-приложениях.


По сути, JSON – это строка в определенном формате и поэтому так же, как и с любой другой строкой, с ней можно работать при помощи функций работы со строками, такими как СтрНайти (), СтрЗаменить () и другими. В теории можно написать функцию, которая из произвольной строки будет формировать строку в формате данных JSON.


Но так как данный формат достаточно популярен, в платформе 1С с некоторых пор есть встроенные функции для работы с данным форматом.


С помощью данных функций платформа позволяет автоматически сгенерировать строку в JSON формате, принимая на вход значения следующих типов:

·         Строка;

·         Число;

·         Булево;

·         Дата;

·         Массив (обычный и фиксированный);

·         Структура (обычная и фиксированная);

·         Соответствие (обычное и фиксированное).


Ниже приведена функция, преобразующая структуру в строку JSON.


Alt: Функция преобразует структуру в строку JSON.

 Функция, которая преобразует структуру в строку JSON.  


2.      Сериализация в JSON


Основные действия в данной функции выполняет метод глобального контекста ЗаписатьJSON ().


В данный метод передается объект типа запись JSON, который был подготовлен для записи при помощи метода УстановитьСтроку (), а также параметр ТелоJSON – та самая структура, которая должна быть преобразована.


Данное преобразование называется в JSON Сериализацией.  


3.      Десериализация в JSON


Аналогичным образом можно выполнить обратное преобразование, т.е. преобразовать строку JSON в структуру (или любой другой тип, который может быть записан в формат данных JSON).


Ниже представлена функция выполняющая обратное преобразование (десериализацию в JSON).


Alt: Сериализация JSON типа Дата

 Функция для десериализации в JSON


В качестве входного параметра в нее передается строка в JSON. При помощи метода глобального контекста ПрочитатьJSON () выполняется преобразование в структуру.


Данные функции можно использовать при работе с запросами для быстрой и простой сериализации и десериализации.  


4.      Дата в JSON


Следует уделить особое внимание десериализации в JSON типа «Дата». Данный тип без проблем сериализуются в JSON, а вот с десериализацией иногда могут возникнуть трудности. JSON воспринимает тип «Дата» как строку. Для правильного формата даты при сериализации в JSON у метода ЗаписатьJSON () можно воспользоваться параметром «НастройкиСериализации».


Данный параметр, позволяет указать, в каком виде (UTC, локальная и т. д.) и в каком формате формате (ISO, JavaScript или Microsoft) будет записана дата.


Alt: Сериализация JSON

Сериализация JSON типа Дата


Строка JSON после такой сериализации будет выглядеть следующим образом:


Alt: Чтение даты

Пример строки JSON


При чтении даты из JSON всё обстоит немного по-другому. Для корректного отображения в параметр ИменаСвойствСоЗначениямиДата нужно передать те свойства JSON, значения которых нужно преобразовать в дату 1С:Предприятия (тип Дата). А в параметр ОжидаемыйФорматДаты необходимо задать формат этих данных в JSON.


Alt: Чтение даты из JSON

Чтение даты из JSON


Данный код десериализует строку JSON представленную выше в правильном формате.


Однако если теперь передавать в данную процедуру другую строку JSON (например, дата рождения будет в другом формате), будет вызвано исключение.


В такой ситуации для большей универсальности можно добавить свойства JSON в массив, который в дальнейшем будет обработан с помощью функции восстановления. И десериализовать даты JSON именно в этой функции.


Специалист компании «Кодерлайн»

Айдар Фархутдинов

 

Наши проекты

Группа компаний ТМ «Дружба народов»
Группа компаний ТМ «Дружба народов»

Отрасль:
Пищевая промышленность

Внедренное типовое решение:
1С:ERP Управление предприятием 2.1

- Переход на новый релиз 2.1 программы «1С:ERP Управление предприятием»
- Разра...

Апгрейд 1С:Бухгалтерия 8 ПРОФ (USB) до версии 1С:Бухгалтерия 8 КОРП (USB)
ООО «Ява Строй»

Отрасль:
Строительство

Внедренное типовое решение:
1С:Бухгалтерия 8 КОРП (USB)

- Создание чистых конфигураций. Внесение изменений в БД ЗУП и новая расчетна...

Внедрение ПП "1С:Корпоративный инструментальный пакет 8" в ООО «Торговый Дом Факел»
ООО «Торговый Дом Факел»

Отрасль:
Производство

Внедренное типовое решение:
1С:Предприятие 8. ERP Управление предприятием 2

Различная отраслевая специфика:
- Переработка давальческого сырья
- Уче...

Внедрение системы финансового учета БИТ:Финанс
ООО «Алькор и Ко» (Л’Этуаль)

Отрасль:
Торговля

Внедренное типовое решение:
БИТ.Финанс

- Финансовый учет;
- Поддержка проекта внедрения МСФО;
- Регламентные рабо...

Автоматизация торгового учета на базе "1С:Управление торговлей"
ООО «ТЕЛЕВЕС РУСС»

Отрасль:
Торговля

Внедренное типовое решение:
1С:Управление торговлей

- Управление складскими запасами;
- Оформление заказов покупателей;
- Пла...

Внедрение 1С:Управление торговлей в оптово-розничной компании «Ална-Байк»
ИП Титов Виктор Сергеевич «Ална-Байк»

Отрасль:
Торговля

Внедренное типовое решение:
1С:Управление торговлей

- Управление складами;
- Управление заказами поставщиков;
- Управление зак...

ФГУП «Почта России»
ФГУП «Почта России»

Отрасль:
Почта, доставка

Внедренное типовое решение:
1С:Зарплата и управление персоналом

- Бухгалтерский учет
- Расчет зарплаты и кадровый учет
- Налоговый учет ...

ООО «Вистеон Автоприбор Электроникс»
ООО «Вистеон Автоприбор Электроникс»

Отрасль:

Внедренное типовое решение:
1C:Управление производственным предприятием

- Управленческий учет; - Расчет зарплаты; - Логистика адресного склада; - Учет ...

Внедрение ПП "1С:Бухгалтерия 8 ПРОФ" в ООО Фирма «Бисер»
ООО фирма «Бисер»

Отрасль:
Производство

Внедренное типовое решение:
1С:Бухгалтерия 8 ПРОФ

Финансы, управленческий учет, мониторинг показателей:
- Налоговый учет...

ООО "Смена"
ООО "Смена"

Отрасль:
Торговля, склад, логистика, транспорт

Внедренное типовое решение:
1С:Комплексная автоматизация

Банк и касса
Расчеты с контрагентами
Торговые операции
Взаиморасчеты с...

ЗАО «Многопрофильная формирующая авиагруппа» (ЗАО МФГ)
ЗАО «Многопрофильная формирующая авиагруппа» (ЗАО МФГ)

Отрасль:
Оптовая торговля транспортными средствами и оборудованием

Внедренное типовое решение:
1С:Бухгалтерия ПРОФ

- Финансы, управленческий учет, мониторинг показателей
- Бухгалтерский уче...

Установка программного продукта БИТ.Финанс для 1С:Бухгалтерия 8
ООО «Джи Эй Си Шиппинг энд Лоджистикс»

Отрасль:
Транспорт

Внедренное типовое решение:
БИТ.Финанс

Построение единого информационного пространства финансовой службы;
Учет ...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение