jexlibпакет
с апстрима
Пакет лежит в основном пуле хаба: короткой формы достаточно, если хаб прописан сервером пакетов в opm.cfg.
opm install jexlibУстановка на opm младше 1.7.0
Легаси-флоу. Клиент младше 1.7.0 адрес пула в аргументе не разбирает: пул сначала прописывают сервером пакетов, и только потом ставят через него. На 1.7.0 и новее этот раздел не нужен — хватает команды из шапки страницы.
Добавьте пул сервером пакетов в opm.cfg. Порт продублирован в «Сервер»: у opm push поле «Порт» не читается.
{
"СервераПакетов": [
{
"Имя": "default",
"Сервер": "https://hub.1cdevelopers.ru",
"Порт": 443,
"ПутьНаСервере": "/api/v1/pools/default/download/",
"РесурсПубликацииПакетов": "/api/v1/pools/default/push",
"Приоритет": 1
}
]
}И ставьте пакет, указывая сервер:
opm install -m default jexlibОписание
Oscript JSON data extractor component
Компонента извлечения данных из JSON по указанному пути JSON-Path для oscript
Примеры использования
Извлечение данных по пути JSON-Path из строки
#Использовать jexlib
СтрокаJSON = "[{""Имя"":""Вася"",""Пол"":""Мужской"",""Возраст"":29},{""Имя"":""Люба"",""Пол"":""Женский"",""Возраст"":30}]";
ИзвлечениеДанных = Новый ИзвлечениеДанныхJSON();
ИзвлечениеДанных.УстановитьСтроку(СтрокаJSON);
Результат = ИзвлечениеДанных.Выбрать("$..Имя");
Сообщить(Результат);
// [
// "Вася",
// "Люба"
// ]
Результат = ИзвлечениеДанных.Выбрать("$..[?(@.Возраст >= 30)].Имя");
Сообщить(Результат);
// "Люба"
Извлечение данных по пути JSON-Path из файла
#Использовать jexlib
ИмяВходящегоФайла = "d:\tmp\inputFile.json";
// inputFile.json
//
// [
// {
// "Имя"":"Вася"",
// "Пол"":"Мужской",
// "Возраст":29
// },
// {
// "Имя":"Люба",
// "Пол":"Женский",
// "Возраст":30
// }
// ]
ИзвлечениеДанных = Новый ИзвлечениеДанныхJSON();
ИзвлечениеДанных.ОткрытьФайл(ИмяВходящегоФайла, КодировкаТекста.UTF8);
Результат = ИзвлечениеДанных.Выбрать("$[0].Пол");
Сообщить(Результат);
// "Мужской"
Извлечение данных по пути JSON-Path из потока
#Использовать jexlib
ИмяВходящегоФайла = "d:\tmp\inputFile.json";
// inputFile.json
//
// [
// {
// "Имя"":"Вася"",
// "Пол"":"Мужской",
// "Возраст":29
// },
// {
// "Имя":"Люба",
// "Пол":"Женский",
// "Возраст":30
// }
// ]
ИзвлечениеДанных = Новый ИзвлечениеДанныхJSON();
Поток = Новый ФайловыйПоток(ПутьКФайлу, РежимОткрытияФайла.Открыть);
ИзвлечениеДанных.ОткрытьПоток(Поток, КодировкаТекста.UTF8);
Результат = ИзвлечениеДанных.Выбрать("$[1].Пол");
Сообщить(Результат);
// "Женский"
Агрегатные функции над результатом выборки
| Функция | Применимо к типу выборки | Тип результата | Назначение |
|---|---|---|---|
| length() | Массив, Соответствие | Число | - получает количество значений |
| sum() | Массив из Число | Число | - получает сумму значений в массиве |
| avg() | Массив из Число | Число | - получает среднее значение в массиве |
| min() | Массив из Число | Число | - получает минимальное значение в массиве |
| max() | Массив из Число | Число | - получает максимальное значение в массиве |
| first() | Массив из Произвольный | Произвольный | - получает первое значение из массива |
| last() | Массив из Произвольный | Произвольный | - получает последнее значение из массива |
| keys() | Массив, Соответствие | Массив из Строка | - получает список полей в соответствии или список индексов в массиве |
Пример
#Использовать jexlib
СтрокаJSON = "[{""Имя"":""Вася"",""Пол"":""Мужской"",""Возраст"":29},{""Имя"":""Люба"",""Пол"":""Женский"",""Возраст"":30}]";
ИзвлечениеДанных = Новый ИзвлечениеДанныхJSON();
ИзвлечениеДанных.УстановитьСтроку(СтрокаJSON);
// Количество
Результат = ИзвлечениеДанных.Выбрать("$.Возраст.length()");
Сообщить(Результат); // 2
// Сумма
Результат = ИзвлечениеДанных.Выбрать("$.Возраст.sum()");
Сообщить(Результат); // 59
// Среднее
Результат = ИзвлечениеДанных.Выбрать("$.Возраст.avg()");
Сообщить(Результат); // 29.5
// Минимум
Результат = ИзвлечениеДанных.Выбрать("$.Возраст.min()");
Сообщить(Результат); // 29
// Максимум
Результат = ИзвлечениеДанных.Выбрать("$.Возраст.max()");
Сообщить(Результат); // 30
// Первое
Результат = ИзвлечениеДанных.Выбрать("$.Возраст.first()");
Сообщить(Результат); // {"Имя": "Вася", "Пол": "Мужской", "Возраст": 29}
// Последнее
Результат = ИзвлечениеДанных.Выбрать("$.Возраст.last()");
Сообщить(Результат); // {"Имя": "Люба", "Пол": "Женский", "Возраст": 30}
// Поля
Результат = ИзвлечениеДанных.Выбрать("$..[?(@.Возраст >= 30)].keys()");
Сообщить(Результат); // ["Имя", "Пол", "Возраст"]