JSON в 1С

Логотип JSONВерсия технологической платформы 8.3.6 принесла с собой встроенные объекты для работы с JSON, таки образом моя прошлая статья более не является актуальной, но все еще может пригодиться, если у Вас нет возможности использовать новые версии технологической платформы.

В этой статье будет рассмотрена работа с JSON в 1С стандартными средствами.

Напомню, что JSON — это популярный текстовый формат обмена данными. Несмотря на свое происхождения от JavaScript, JSON считается независимым форматом и может использоваться с практически любым языком программирования.

JSON — это достаточно лаконичный формат, что выгодно отличает его от того же XML.

Для начала приведу небольшую теоретическую выдержку с портала ИТС.

Формат JSON является универсальным способом представления при обмене данными. Данные в формате JSON представляют собой (в закодированном виде):

  • Объект – неупорядоченное множество пар ключ:значение, заключенный в фигурные скобки ({}). Пары ключ:значение разделяются запятыми (,);
  • Массив – множество значений. Массив заключается в квадратные скобки ([]). Значения разделяются запятыми (,);
  • Значение – может быть строкой, числом, объектом, массивов или литералом true, false, null:
    • Строка – набор символов, заключенный в двойные кавычки («»);
    • Число – сериализуется с разделителем точка (.). Точность числа не ограничена.

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

Для начала рассмотрим запись в JSON. Запишем простую структуру:

Представление дат определяется двумя свойствами объекта «НастройкиСериализацииJSON» и соответствующими системными перечислениями «ФорматДатыJSON» и «ВариантЗаписиДатыJSON».

При этом формат даты «JavaScript» и «Microsoft» можно указать, только если вариант записи даты — универсальная дата, иначе при записи возникнет ошибка:

Ошибка при записи JSON
Ошибка при записи JSON

Далеко не все типы данных системы 1С являются JSON-сериализуемыми, решить эту проблему можно при помощи т.н. функции преобразования (отмеченной ключевым словом «Экспорт»). При этом формат сериализации нужно будет прописать в ручную, пример:

Часто бывает, что у нас нет готового объекта для записи, а есть некие данные, которые нуждаются в какой-то предварительной обработке (например выборка запроса), чтобы не формировать промежуточный объект, можно воспользоваться потоковой записью:

В коде выше используется объект «ПараметрыЗаписиJSON» с помощью которого можно указать вид переноса строк, символ отступа, использование двойных кавычек, а так же необходимость экранирования различных символов.

Пи формировании документа JSON можно совмещать объектную и потоковую запись.

Теперь перейдем к чтению JSON, самый простой вариант:

Чтение JSON
Чтение JSON

В примере выше отдельно показано преобразование даты JSON в дату 1С.

Также как и для записи, для чтения существует вариант с т.н. функцией восстановления:

Чтение JSON с функцией восстановления
Чтение JSON с функцией восстановления

Результат практически тот же самый, но «ДатаJSON» и «uidJSON» приведены к типам 1С.

Так же как и для записи, для чтения JSON можно применить потоковый вариант — он особенно полезен, когда объем JSON-данных велик (не загружает эти данные в память), а искомое значение находится в начале файла.

Простой вариант потокового чтения выглядит так:

На этом все, надеюсь эта статья Вам помогла.

3 комментария к “JSON в 1С

  1. Никак не описана передача дробного числа со значением после запятой, вот где главная засада.

Оставить комментарий