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