SkillAgentSearch skills...

Jexlib

Компонента извлечения данных из JSON по указанному пути JSON-Path для oscript

Install / Use

/learn @arkuznetsov/Jexlib
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

GitHub release GitHub license GitHub Releases GitHub All Releases

Build Status Quality Gate Coverage Tech debt

<a href="https://checkbsl.org"><img alt="Checked by Silver Bulleters SonarQube BSL plugin" src="https://web-files.do.bit-erp.ru/sonar/b_t.png" align="right" style="width:400px"/></a>

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()");

Сообщить(Результат); // ["Имя", "Пол", "Возраст"]

View on GitHub
GitHub Stars10
CategoryDevelopment
Updated11mo ago
Forks3

Languages

C#

Security Score

87/100

Audited on Apr 26, 2025

No findings