В процессе обмена данными с внешними веб-сервисами и API часто возникает необходимость обработать ответ в формате JSON. Разберем детально, как преобразовать полученную строку в структуру 1С и корректно достать из нее нужные значения.
Для начала работы со строкой нам необходимо использовать встроенные средства платформы. Ключевым инструментом является объект ЧтениеJSON. Рассмотрим пошагово, как подготовить данные для дальнейшей работы:
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(ДлиннаяСтрока);
Результат = ПрочитатьJSON(ЧтениеJSON);
После выполнения метода ПрочитатьJSON, ваша строка превращается в иерархическую структуру объектов 1С: массивы JSON становятся объектами типа Массив, а объекты JSON — объектами типа Структура. Это позволяет работать с данными привычными средствами языка 1С.
Самая частая сложность заключается в навигации по вложенным элементам. Поскольку JSON от API (например, DaData) часто содержит массивы (обозначаются квадратными скобками []) и вложенные структуры (обозначаются фигурными скобками {}), важно соблюдать правильный путь к данным.
Рассмотрим конкретный пример обращения к данным из вашего ответа. Чтобы получить КПП организации, необходимо пройти по следующему пути:
1. Обращение к массиву: Так как suggestions является массивом, мы обращаемся к первому элементу через индекс [0].
2. Переход к данным: Внутри элемента находится структура data, а внутри неё — поле kpp.
Итоговый код для получения значений будет выглядеть так:
// Получаем КПП организации
КПП = Результат.suggestions[0].data.kpp;
// Получаем адрес организации
Адрес = Результат.suggestions[0].data.address.value;
Разработка интеграций требует внимательности. Чтобы не гадать, какой именно путь прописать в коде, используйте следующие советы:
ПрочитатьJSON. Откройте переменную Результат в окне «Табло» или «Вычислить выражение». Раскрывая дерево элементов, вы наглядно увидите, где заканчивается массив и начинается структура. Это лучший способ избежать ошибок в синтаксисе.
Если Результат.suggestions.Количество() > 0 Тогда
КПП = Результат.suggestions[0].data.kpp;
КонецЕсли;
Свойство(). Это защитит программу от ошибки «Поле объекта не обнаружено»:
Данные = Результат.suggestions[0].data;
Если Данные.Свойство("kpp", ЗначениеКПП) Тогда
// Работаем со значением
КонецЕсли;
Соблюдая этот алгоритм, вы сможете легко извлекать любые данные из сложных JSON-структур, делая ваши интеграции надежными и предсказуемыми.