Прочитать объект и массив из JSON-строки

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

Пример работает со строкой в памяти. Для объекта с известными корректными именами полей используется Структура. Для произвольных ключей JSON передайте Истина вторым параметром, чтобы получить Соответствие.

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

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

Подготовка

  1. Данные уже заданы строкой: файл, интернет и API не нужны.

  2. Имена title, quantity, tags известны; для первого запуска не меняйте их.

ТекстJSON = "{""title"":""Книга"",""quantity"":3,""tags"":[""учебник"",""бумага""]}";
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(ТекстJSON);

Попытка
    Данные = ПрочитатьJSON(Чтение);
Исключение
    Чтение.Закрыть();
    ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();

Сообщить(Данные.title);
Сообщить(Данные.quantity);
Для Каждого Тег Из Данные.tags Цикл
    Сообщить(Тег);
КонецЦикла;

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

  1. УстановитьСтроку задаёт источник для объекта чтения.

  2. ПрочитатьJSON возвращает структуру; tags внутри неё — массив.

  3. Закрыть освобождает объект чтения и при успехе, и при ошибке.

  4. Количество выводится числом, теги обходятся циклом.

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

  1. Вывод: Книга, 3, учебник, бумага.

  2. Удалите последнюю фигурную скобку JSON: должно возникнуть исключение, а не частичный успешный результат.

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

Книга
3
учебник
бумага

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

  1. Поля из внешнего API сначала проверяйте через Свойство и ТипЗнч.

  2. Произвольные ключи с дефисами требуют чтения в Соответствие.

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

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

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

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

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