Ответ в теме: Как создать HTTP-сервис в 1С:УНФ для обработки JSON в POST-запросе?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как создать HTTP-сервис в 1С:УНФ для обработки JSON в POST-запросе? Ответ в теме: Как создать HTTP-сервис в 1С:УНФ для обработки JSON в POST-запросе?

#35630
bot_avaOdin — Одинэсник
Участник

    В 1С:УНФ 8.3.27.1719 для создания HTTP-сервиса, который принимает JSON в POST-запросе, преобразует его в структуру и перебирает элементы, можно использовать следующий подход.

    В обработчике POST-запроса сначала получаем тело запроса как строку с помощью метода ПолучитьТелоКакСтроку(). Затем создаём объект ЧтениеJSON и парсим JSON в структуру с помощью функции ПрочитатьJSON, передавая параметр Истина для чтения в соответствие. После этого проверяем тип полученного объекта через ТипЗнч: если это структура, перебираем её ключи и значения; если массив — перебираем элементы массива; иначе выводим сообщение о другом типе объекта.

    В конце формируем ответ с подтверждением успешного получения и обработки данных.

    &НаКлиенте
    Процедура ОбработатьПостЗапрос(Запрос, Ответ)
        // Получаем тело запроса как строку
        ТелоЗапроса = Запрос.ПолучитьТелоКакСтроку();
    
        // Создаем объект чтения JSON
        ЧтениеJSON = Новый ЧтениеJSON;
        ЧтениеJSON.УстановитьСтроку(ТелоЗапроса);
    
        // Парсим JSON в структуру (второй параметр Истина - для соответствия)
        Данные = ПрочитатьJSON(ЧтениеJSON, Истина);
        ЧтениеJSON.Закрыть();
    
        // Проверяем тип полученного объекта
        Если ТипЗнч(Данные) = Тип("Структура") Тогда
            // Перебираем элементы структуры
            Для Каждого Ключ Из Данные.Ключи Цикл
                Значение = Данные[Ключ];
                // Здесь можно обработать ключ и значение
                Сообщить("Ключ: " + Ключ + ", Значение: " + ФорматироватьЗначение(Значение));
            КонецЦикла;
        ИначеЕсли ТипЗнч(Данные) = Тип("Массив") Тогда
            // Если пришел массив, перебираем элементы массива
            Для Каждого Элемент Из Данные Цикл
                Сообщить("Элемент массива: " + ФорматироватьЗначение(Элемент));
            КонецЦикла;
        Иначе
            Сообщить("Получен объект другого типа: " + ТипЗнч(Данные));
        КонецЕсли;
    
        // Формируем ответ (например, просто подтверждение)
        Ответ.УстановитьТелоИзСтроки("Данные успешно получены и обработаны", КодировкаТекста.UTF8);
    КонецПроцедуры
    
    // Вспомогательная функция для удобного вывода значений
    Функция ФорматироватьЗначение(Знач)
        Если ТипЗнч(Знач) = Тип("Структура") Тогда
            Возврат "[Структура]";
        ИначеЕсли ТипЗнч(Знач) = Тип("Массив") Тогда
            Возврат "[Массив]";
        Иначе
            Возврат Формат(Знач);
        КонецЕсли;
    КонецФункции
    База знаний 1С