Как правильно сформировать JSON в 1С без ошибок с экранированием кавычек?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При обмене данными с внешними сервисами, такими как amoCRM или другие REST API, разработчики часто сталкиваются с необходимостью формирования JSON-структур. Самая частая ошибка новичков — попытка собрать JSON вручную, объединяя строки и пытаясь правильно расставить кавычки и символы переноса строк. Это почти всегда приводит к ошибкам синтаксиса, с которыми не может работать принимающая сторона.

В данной статье мы разберем, как перестать «мучиться» с экранированием и научимся использовать встроенные механизмы платформы 1С для профессионального создания JSON-файлов.

Почему не стоит писать JSON вручную?

Когда вы формируете JSON как обычную строку, вам приходится вручную управлять спецсимволами: кавычками ", обратными слэшами \ и переносами строк. Даже малейшая опечатка делает JSON невалидным. Вместо этого в 1С предусмотрены объекты Структура, Массив и Соответствие, которые при сериализации автоматически расставляют все необходимые символы согласно спецификации JSON.

Разбираем правильный подход к созданию структуры JSON

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

Для начала мы подготовим данные в виде объектов 1С:

  1. Создаем Массив для хранения значений полей.
  2. Создаем Структуру для элемента поля, в которую помещаем field_id и массив значений.
  3. Создаем корневую Структуру для всего объекта.

Пример кода для формирования корректного JSON

Давайте проанализируем код, который позволит вам быстро и надежно создать нужный JSON. Мы будем использовать объект ЗаписьJSON.


ЗаписьДЖСОН = Новый ЗаписьJSON;
ЗаписьДЖСОН.УстановитьСтроку();

// Формируем внутренний массив значений
МассивВторогоУровня = Новый Массив;
МассивВторогоУровня.Добавить("11111111");

// Создаем структуру для поля
СтруктураВСтуктуре = Новый Структура();
СтруктураВСтуктуре.Вставить("field_id", 354313);
СтруктураВСтуктуре.Вставить("values", МассивВторогоУровня);

// Создаем основной массив для custom_fields_values
МассивПервогоУровня = Новый Массив;
МассивПервогоУровня.Добавить(СтруктураВСтуктуре);

// Собираем всё в корневую структуру
СтруктураДанных = Новый Структура();
СтруктураДанных.Вставить("name", "New company name");
СтруктураДанных.Вставить("custom_fields_values", МассивПервогоУровня);

// Записываем результат
ЗаписатьJSON(ЗаписьДЖСОН, СтруктураДанных);
СтрокаJSON = ЗаписьДЖСОН.Закрыть();

Важные нюансы при работе с JSON в 1С

Типизация данных: Обратите внимание на field_id. В 1С, если вы передаете число, оно будет записано в JSON без кавычек. Если же ваш API требует, чтобы ID передавался обязательно в виде строки, принудительно приводите его к типу Строка при вставке в структуру: СтруктураВСтуктуре.Вставить("field_id", "354313");.

Массивы: Даже если у вас всего один элемент, внешние API требуют наличия массива (квадратные скобки []). Поэтому использование объекта Массив обязательно, даже для единственного значения.

Автоматизация сериализации: Если структура данных становится очень большой, вместо ручного создания множества структур можно использовать СериализаторXDTO или просто ЗаписатьJSON с уже заполненными коллекциями. Это защищает вас от ошибок в синтаксисе JSON и позволяет сосредоточиться на логике передачи данных.

Проверка результата: Всегда проверяйте полученную строку методом ПрочитатьJSON. Если метод не выдал исключение, значит, формат сформирован верно и его можно отправлять на сервер.

Таким образом, используя стандартные объекты Структура и Массив, вы навсегда забудете о проблемах с битыми JSON-файлами и сэкономите массу времени на отладке интеграций!

← На главную