При работе с внешними сервисами, API или файлами обмена мы часто сталкиваемся с форматом JSON. Одна из распространенных задач — получение данных из массива объектов и объединение их в одну красивую строку для вывода пользователю. Давайте разберем, как грамотно обработать структуру типа params, содержащую массив параметров (например, состав ткани), и превратить её в читаемый вид.
Для того чтобы 1С «поняла» переданную строку, нам необходимо преобразовать её из текстового формата в объектную модель 1С — структуру или массив. Самый надежный и современный способ — использование объектов ЧтениеJSON и ПрочитатьJSON.
Рассмотрим, как правильно считать строку в массив структур:
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(ВходнаяСтрокаJSON);
Данные = ПрочитатьJSON(ЧтениеJSON, Истина);
ЧтениеJSON.Закрыть();
В результате переменная Данные будет представлять собой Массив, внутри которого находятся Структуры с ключами value, count и units. Это позволяет нам обращаться к данным не через «магические» замены строк, а через индексы и свойства, что значительно повышает надежность кода.
Если вам нужно получить значение для одной конкретной переменной, например, только для первого элемента массива (первого компонента состава), вы можете сделать это напрямую. Обращение к элементам массива осуществляется по индексу, начиная с нуля:
Если Данные.Количество() > 0 Тогда
ПервыйЭлемент = Данные[0];
Материал = ПервыйЭлемент["value"];
Процент = ПервыйЭлемент["count"];
КонецЕсли;
Всегда используйте проверку Количество(), чтобы избежать ошибок при пустом входящем наборе данных.
Когда нам нужно обойти весь массив и склеить значения в одну строку вида «вискоза 80%, полиэстер 20%», важно делать это производительно. Использование простого сложения строк через оператор «+» внутри цикла — плохая практика, так как это создает избыточную нагрузку на память.
Разберем современный и быстрый подход с использованием массива строк и функции СтрСоединить:
МассивСтрок = Новый Массив;
Для Каждого Элемент Из Данные Цикл
СтрокаСостава = СтрШаблон("%1 %2%3", Элемент.value, Элемент.count, Элемент.units);
МассивСтрок.Добавить(СтрокаСостава);
КонецЦикла;
Результат = СтрСоединить(МассивСтрок, ", ");
Преимущества этого метода:
СтрСоединить работает значительно быстрее, чем многократная конкатенация длинных строк.Сред для обрезания лишних символов — 1С сама расставит разделители только между элементами.СтрШаблон делает формирование текста внутри цикла наглядным и понятным.При работе с нетипизированными данными из JSON всегда стоит учитывать возможные ошибки формата. Постарайтесь внедрить следующие проверки:
Если Элемент.Свойство("value") Тогда ... КонецЕсли;.Попытка...Исключение при вызове ПрочитатьJSON, если формат входящей строки не гарантирован.ЧтениеJSON после завершения работы с данными, чтобы освободить системные ресурсы.Следуя этим простым шагам, вы сможете превратить любую JSON-структуру в удобный для пользователя вид, сделав код профессиональным, быстрым и устойчивым к изменениям во входных данных.