Формат JSON в 1С до версии 8.3.6 не реализован, но нижет я приведу примеры функций которые можно использовать для полноценной работы JSON в 1С предыдущий версий.
JSON (JavaScript Object Notation) это текстовый формат обмена данными, широко используемый в веб-приложениях. По сравнению с XML он является более лаконичным и занимает меньше места. Кроме этого все браузеры имеют встроенные средства для работы с JSON.
Необходимость работы с этим форматом на уровне платформы обусловлена не только тем, что это «модный современный» формат, который прикладные решения 1С:Предприятия сами по себе могут использовать для интеграции со сторонними приложениями. Другая причина заключается ещё и в том, что JSON активно используется в HTTP интерфейсах. А в 1С:Предприятии как раз есть такие механизмы, в которых хочется использовать этот формат. Это REST интерфейс приложения, автоматически генерируемый платформой, и HTTP-сервисы, которые вы можете создавать самостоятельно.
В платформе с версии 8.3.6:
Потоковое чтение и запись JSON:
Объекты потоковой работы - это общие объекты ЧтениеJSON и ЗаписьJSON. Они последовательно читают JSON из файла или строки, или последовательно записывают JSON в файл или строку. Таким образом, чтение и запись JSON происходят без формирования всего документа в памяти.
В качестве иллюстрации потокового чтения JSON можно привести следующий пример:
Результат такой записи:
Сериализация примитивных типов и коллекций в JSON
Вторая группа средств работы с JSON хороша тем, что избавляет вас от рутинной работы по чтению/записи каждого отдельного значения или свойства. При чтении документы JSON отображаются в фиксированный набор типов платформы: Строка, Число, Булево, Неопределено, Массив, ФиксированныйМассив, Структура, ФиксированнаяСтруктура, Соответствие, Дата. Соответственно, в обратную сторону, композиция объектов этих типов позволяет сформировать в памяти и быстро записать в файл структуру JSON. Таким образом, чтение и запись небольшого объема JSON заранее известной структуры можно производить немногими строчками кода.
Основное назначение этих средств мы видим в обмене информацией с внешними системами, чтении конфигурационных файлов в формате JSON.
Сериализацию вы можете выполнять с помощью методов глобального контекста ПрочитатьJSON() и ЗаписатьJSON(). Они работают в связке с объектами ЧтениеJSON и ЗаписьJSON.
В качестве примера десериализации JSON можно рассмотреть чтение массива из двух объектов:
Полностью автоматизировали работу с JSON и реализовали в платформе третью группу средств. Они позволяют сериализовать в JSON прикладные типы 1С:Предприятия: ссылки, объекты, наборы записей и вообще любые типы, для которых поддерживается XDTO сериализация. Конечно же, мы обеспечили и обратную операцию - десериализацию. Зачем это нужно!?
Прежде всего, и в основном, XDTO сериализацию в JSON мы рекомендуем использовать при обмене данными между двумя прикладными решениями 1С:Предприятия. По сравнению с XML формат JSON более компактный, сериализация/десериализация в/из JSON выполняется быстрее. Кроме этого мы предприняли дополнительные меры для того, чтобы сократить объём передаваемых данных.
Кроме обмена между приложениями 1С:Предприятия этот механизм можно использовать и для обмена с внешними системами, готовыми принимать типы данных 1С:Предприятия. Например, XDTO сериализацию в JSON можно использовать для организации собственного HTTP интерфейса прикладного решения. Сервис на платформе 1С:Предприятия будет формировать ответ в памяти в виде строки JSON. А затем передавать её при помощи объекта HTTPСервисОтвет. Реализованный нами механизм сериализации полностью соответствует стандарту JSON. Поэтому внешняя система не должна испытывать каких-либо трудностей с десериализацией.
Использование XDTO сериализации в JSON для других задач видится нам маловероятным. Потому что если внешняя система не готова работать с прикладными типами 1С:Предприятия, то зачем их ей передавать? А если предполагается обмениваться только примитивными типами и коллекциями, то для этой задачи хорошо подходят методы ПрочитатьJSON() и ЗаписатьJSON(). Подробнее здесь
При обмене данными с веб-сайтами зачастую используется формат JSON. К сожалению, в 1С нет стандартных процедур для работы с данным форматом. В процессе реализации одного из проектов мной был разработан ряд процедур и функций облегчающих жизнь программисту 1С при работе с данными в формате JSON.
По сути, при работе с JSON требуется две операции: сформировать строку JSON (например, для передачи параметров на веб-сервер в формате JSON из 1С) и прочитать данные из строки JSON (например, когда мы получаем ответ от веб-сервера в формат JSON). Так как формат JSON в упрощенном виде представляет собой набор параметров в виде <ИмяПараметра>:<ЗначениеПараметра> то для работы с JSON в 1С мной был использован тип "Структура". Т.е. процедура чтения данных из формата JSON преобразует строку JSON в тип 1С "Структура". Так же и строка JSON в 1С формируется из структуры. Т.о. чтобы сформировать строку JSON сначала необходимо заполнить структуру необходимыми значениями, а потом вызвать функцию, преобразующую структуру в JSON. Позднее функционал функции формирования строки JSON был расширен - теперь в JSON может быть преобразован массив и таблица значений. При желании можно доработать функцию так, чтобы она "понимала" и другие типы. Такие как "Cоответствие", "ДеревоЗначений" и др. На практике это редко может пригодиться, поэтому сам я этого делать не стал.
А теперь подробней о том, как работать с функциями преобразования JSON.
Преобразование строки JSON в структуру 1С.
Для преобразования строки JSON в структуру 1С служит функция ЗаполнитьСтруктуруИзJSON().
<ТекстJSON> (обязательный) - строка в формате JSON,
которую необходимо преобразовать в структуру.
Возвращаемое значение.
Тип Структура.
Имя значения задается в структуре как Ключ, а само значение, соответственно, как значение. Поддерживаются также вложенные значение ("{}" в "{}") и массивы. В таких случаях тип значения будет Структура и Массив соответственно. Если у в JSON задан только массив, то сформируется структура с одним элементом с ключом "Значение" и типом "Массив". Ниже приведены поясняющие примеры:
Следует заметить, что все значения заполняются как строковые (тип "Строка"). Последующее преобразование (например, к числу) лежит на самом разработчике.
Формирование строки JSON в 1С.
Для формирования строки в формате JSON в 1С предназначена функция СформироватьСтрокуJSON().
<Объект> (обязательный) - объект, который необходимо
преобразовать в формат JSON. Может иметь тип "Структура",
"Массив" или "ТаблицаЗначений".
Если Объект имеет тип "ТаблицаЗначений", то она рассматривается как массив из структур, соответствующих колонкам ТЗ. Все значения приводятся к строковому типу, дата приводится в формат unixtime, значение типа булево "Истина" преобразуется в строку "true", а "Ложь" - в "false, прочие объекты просто преобразуются как "Строка(Объект)".