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()");
Сообщить(Результат); // ["Имя", "Пол", "Возраст"]