Тип: Булево. Если свойство имеет значение Истина, то массив будет сериализован как объект JSON следующего вида: { "1":"Значение1", "2":"Значение2", "3":"Значение3" } Если свойство имеет значение Ложь, то массив будет записан как массив JSON.
Полное описание, параметры и ограничения
НастройкиСериализацииJSON.СериализовыватьМассивыКакОбъекты (JSONSerializerSettings.SerializeArraysAsObjects)
НастройкиСериализацииJSON (JSONSerializerSettings)
СериализовыватьМассивыКакОбъекты (SerializeArraysAsObjects)
Доступен, начиная с версии 8.3.6.
Использование:
Чтение и запись.
Описание:
Тип: Булево.
Если свойство имеет значение Истина, то массив будет сериализован как объект JSON следующего вида:
{
"1":"Значение1",
"2":"Значение2",
"3":"Значение3"
}
Если свойство имеет значение Ложь, то массив будет записан как массив JSON.
Доступность:
Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.3.6.
Методическая информация
Практические примеры
Увидеть, как настройка меняет массив JSON на объект
Один массив Книга/Ручка записываем двумя способами. Показываем, почему получатель не может безусловно ждать квадратные скобки.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Все исходные JSON-строки и значения заданы в коде. Файлы, токены доступа, интернет и рабочая база не нужны.
Не подставляйте в упражнения ответы реального API с персональными данными. Сначала проверяйте неизменённый учебный набор.
Товары = Новый Массив;
Товары.Добавить("Книга");
Товары.Добавить("Ручка");
Для Режим = 0 По 1 Цикл
Настройки = Новый НастройкиСериализацииJSON;
Настройки.СериализовыватьМассивыКакОбъекты = Режим = 1;
Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку();
ЗаписатьJSON(Запись, Товары, Настройки);
ТекстJSON = Запись.Закрыть();
Сообщить(ТекстJSON);
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(ТекстJSON);
Попытка
Восстановлено = ПрочитатьJSON(Чтение, Истина);
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();
Если Режим = 0 Тогда
Если ТипЗнч(Восстановлено) <> Тип("Массив") Тогда
ВызватьИсключение "Ожидался массив";
КонецЕсли;
Сообщить(Восстановлено[0] = "Книга");
Иначе
Если ТипЗнч(Восстановлено) <> Тип("Соответствие") Тогда
ВызватьИсключение "Ожидался объект в виде соответствия";
КонецЕсли;
Сообщить(Восстановлено["1"] = "Книга");
Сообщить(Восстановлено["2"] = "Ручка");
КонецЕсли;
КонецЦикла;Разбор по шагам
СериализовыватьМассивыКакОбъекты=Ложь сохраняет массив JSON; Истина создаёт объект с именами 1, 2 и далее.
Для чтения объектов включаем режим Соответствие, поскольку ключи 1 и 2 не являются допустимыми именами реквизитов Структуры.
Индекс массива начинается с 0, а строковые имена свойств такого объекта начинаются с 1. Это разные способы доступа.
Как проверить результат
При режиме 0 восстановлен Массив и его элемент с индексом 0 равен Книга.
При режиме 1 восстановлено Соответствие, ключи "1" и "2" дают Книга и Ручка.
Во всех трёх контрольных сообщениях значения Истина.
Ожидаемый результат
На одном наборе показано изменение JSON-контракта настройкой сериализации.
На что обратить внимание
Для обычного REST API оставляйте массив массивом, если иной формат явно не задан контрактом.
Нумерованный объект не гарантирует сохранение порядка при обработке сторонними системами.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Согласовать локальную календарную дату в формате JSON ISO
Записываем и читаем фиксированную локальную дату. Явно не выдаём её за момент UTC или за дату с заданным часовым поясом.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Все исходные JSON-строки и значения заданы в коде. Файлы, токены доступа, интернет и рабочая база не нужны.
Не подставляйте в упражнения ответы реального API с персональными данными. Сначала проверяйте неизменённый учебный набор.
Запись и обратное чтение выполняются в одном серверном контексте. Для этого упражнения выбран локальный календарный контракт без часового смещения.
ИсходнаяДата = Дата(2026, 9, 15, 10, 20, 30);
ТекстДаты = ЗаписатьДатуJSON(ИсходнаяДата, ФорматДатыJSON.ISO, ВариантЗаписиДатыJSON.ЛокальнаяДата);
ВосстановленнаяДата = ПрочитатьДатуJSON(ТекстДаты, ФорматДатыJSON.ISO);
Сообщить(ТекстДаты);
Сообщить(ВосстановленнаяДата = ИсходнаяДата);
Настройки = Новый НастройкиСериализацииJSON;
Настройки.ФорматСериализацииДат = ФорматДатыJSON.ISO;
Настройки.ВариантЗаписиДаты = ВариантЗаписиДатыJSON.ЛокальнаяДата;
Настройки.СериализовыватьМассивыКакОбъекты = Ложь;
Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку();
ЗаписатьJSON(Запись, Новый Структура("date", ИсходнаяДата), Настройки);
ТекстJSON = Запись.Закрыть();
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(ТекстJSON);
Попытка
Данные = ПрочитатьJSON(Чтение);
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();
Если ТипЗнч(Данные.date) <> Тип("Строка") Тогда
ВызватьИсключение "В обычном JSON дата должна была стать строкой";
КонецЕсли;
Сообщить(ПрочитатьДатуJSON(Данные.date, ФорматДатыJSON.ISO) = ИсходнаяДата);Разбор по шагам
Дата платформы не хранит часовой пояс. Явно выбираем ЛокальнаяДата, а не придумываем суффикс Z.
ЗаписатьДатуJSON возвращает строковое представление даты; сериализатор помещает такую строку в поле JSON.
Обычное ПрочитатьJSON возвращает поле date строкой. Для восстановления даты вызываем ПрочитатьДатуJSON отдельно.
При обмене моментами времени с API надо выбрать UTC или согласованный offset-контракт отдельной задачей.
Как проверить результат
Дата восстанавливается равной исходной в обоих сравнениях: Истина.
Поле date после стандартного чтения имеет тип Строка, не Дата.
Измените секунды исходной даты на 45: после обратного чтения они остаются 45.
Ожидаемый результат
Проверен локальный ISO-контракт и явное преобразование строки JSON в дату.
На что обратить внимание
Даты без указания пояса ПрочитатьДатуJSON интерпретирует в поясе локального компьютера: для внешнего API это должно быть явно согласовано.
Не добавляйте Z к локальной строке без преобразования: это меняет смысл времени.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.