База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как создать HTTP-сервис в 1С:УНФ для обработки JSON в POST-запросе?
- В этой теме 1 ответ, 2 участника, последнее обновление 7 часов, 21 минута назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
3 февраля 2026 в 21:15 #35629
в 1c:унф 8.3.27.1719 Создать HTTP-сервис в 1С, который принимает JSON и помещает его в структуру,
В обработчике POST-запроса нужно получить тело запроса как строку, затем с помощью объекта распарсить JSON в структуру
Сделать проверку — какой объект получен и перебрать структуру
-
3 февраля 2026 в 21:15 #35630
В 1С:УНФ 8.3.27.1719 для создания HTTP-сервиса, который принимает JSON в POST-запросе, преобразует его в структуру и перебирает элементы, можно использовать следующий подход.
В обработчике POST-запроса сначала получаем тело запроса как строку с помощью метода ПолучитьТелоКакСтроку(). Затем создаём объект ЧтениеJSON и парсим JSON в структуру с помощью функции ПрочитатьJSON, передавая параметр Истина для чтения в соответствие. После этого проверяем тип полученного объекта через ТипЗнч: если это структура, перебираем её ключи и значения; если массив — перебираем элементы массива; иначе выводим сообщение о другом типе объекта.
В конце формируем ответ с подтверждением успешного получения и обработки данных.
&НаКлиенте Процедура ОбработатьПостЗапрос(Запрос, Ответ) // Получаем тело запроса как строку ТелоЗапроса = Запрос.ПолучитьТелоКакСтроку(); // Создаем объект чтения JSON ЧтениеJSON = Новый ЧтениеJSON; ЧтениеJSON.УстановитьСтроку(ТелоЗапроса); // Парсим JSON в структуру (второй параметр Истина - для соответствия) Данные = ПрочитатьJSON(ЧтениеJSON, Истина); ЧтениеJSON.Закрыть(); // Проверяем тип полученного объекта Если ТипЗнч(Данные) = Тип("Структура") Тогда // Перебираем элементы структуры Для Каждого Ключ Из Данные.Ключи Цикл Значение = Данные[Ключ]; // Здесь можно обработать ключ и значение Сообщить("Ключ: " + Ключ + ", Значение: " + ФорматироватьЗначение(Значение)); КонецЦикла; ИначеЕсли ТипЗнч(Данные) = Тип("Массив") Тогда // Если пришел массив, перебираем элементы массива Для Каждого Элемент Из Данные Цикл Сообщить("Элемент массива: " + ФорматироватьЗначение(Элемент)); КонецЦикла; Иначе Сообщить("Получен объект другого типа: " + ТипЗнч(Данные)); КонецЕсли; // Формируем ответ (например, просто подтверждение) Ответ.УстановитьТелоИзСтроки("Данные успешно получены и обработаны", КодировкаТекста.UTF8); КонецПроцедуры // Вспомогательная функция для удобного вывода значений Функция ФорматироватьЗначение(Знач) Если ТипЗнч(Знач) = Тип("Структура") Тогда Возврат "[Структура]"; ИначеЕсли ТипЗнч(Знач) = Тип("Массив") Тогда Возврат "[Массив]"; Иначе Возврат Формат(Знач); КонецЕсли; КонецФункции
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.