Увидеть, как настройка меняет массив JSON на объект

Учебные задачи

Один массив Книга/Ручка записываем двумя способами. Показываем, почему получатель не может безусловно ждать квадратные скобки.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Все исходные JSON-строки и значения заданы в коде. Файлы, токены доступа, интернет и рабочая база не нужны.

  2. Не подставляйте в упражнения ответы реального API с персональными данными. Сначала проверяйте неизменённый учебный набор.


Товары = Новый Массив;
Товары.Добавить("Книга");
Товары.Добавить("Ручка");
Для Режим = 0 По 1 Цикл
    Настройки = Новый НастройкиСериализацииJSON;
    Настройки.СериализовыватьМассивыКакОбъекты = Режим = 1;
    Запись = Новый ЗаписьJSON;
    Запись.УстановитьСтроку();
    ЗаписатьJSON(Запись, Товары, Настройки);
    ТекстJSON = Запись.Закрыть();
    Сообщить(ТекстJSON);
    Чтение = Новый ЧтениеJSON;
    Чтение.УстановитьСтроку(ТекстJSON);
    Попытка
        Восстановлено = ПрочитатьJSON(Чтение, Истина);
    Исключение
        Чтение.Закрыть();
        ВызватьИсключение;
    КонецПопытки;
    Чтение.Закрыть();
    Если Режим = 0 Тогда
        Если ТипЗнч(Восстановлено) <> Тип("Массив") Тогда
            ВызватьИсключение "Ожидался массив";
        КонецЕсли;
        Сообщить(Восстановлено[0] = "Книга");
    Иначе
        Если ТипЗнч(Восстановлено) <> Тип("Соответствие") Тогда
            ВызватьИсключение "Ожидался объект в виде соответствия";
        КонецЕсли;
        Сообщить(Восстановлено["1"] = "Книга");
        Сообщить(Восстановлено["2"] = "Ручка");
    КонецЕсли;
КонецЦикла;

Разбор по шагам

  1. СериализовыватьМассивыКакОбъекты=Ложь сохраняет массив JSON; Истина создаёт объект с именами 1, 2 и далее.

  2. Для чтения объектов включаем режим Соответствие, поскольку ключи 1 и 2 не являются допустимыми именами реквизитов Структуры.

  3. Индекс массива начинается с 0, а строковые имена свойств такого объекта начинаются с 1. Это разные способы доступа.

Как проверить результат

  1. При режиме 0 восстановлен Массив и его элемент с индексом 0 равен Книга.

  2. При режиме 1 восстановлено Соответствие, ключи "1" и "2" дают Книга и Ручка.

  3. Во всех трёх контрольных сообщениях значения Истина.

Ожидаемый результат

На одном наборе показано изменение JSON-контракта настройкой сериализации.

На что обратить внимание

  1. Для обычного REST API оставляйте массив массивом, если иной формат явно не задан контрактом.

  2. Нумерованный объект не гарантирует сохранение порядка при обработке сторонними системами.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.