
JSONPath v10.4.1
Форк JSONPath с http://goessner.net/articles/JsonPath/
(см. также лицензии для dev. зависимостей)
JSONPath Plus
Анализируйте, преобразовывайте и выборочно извлекайте данные из JSON-документов (и объектов JavaScript).
jsonpath-plus расширяет исходную спецификацию, добавляя некоторые дополнительные операторы и явно определяя поведение, которое оригинал не описывал.
Попробуйте браузерное демо или Runkit (Node).
Обратите внимание: этот проект в настоящее время не поддерживается активно. Мы можем принять хорошо документированные PR или некоторые простые обновления, но не планируем вносить исправления или добавлять новые функции самостоятельно.
Возможности
- Соответствие исходной спецификации jsonpath
- Удобные дополнения или уточнения, не предусмотренные исходной спецификацией:
^для получения родителя совпадающего элемента~для получения имён свойств совпадающих элементов (в виде массива)- Селекторы типов для получения:
- Базовых типов JSON:
@null(),@boolean(),@number(),@string(),@array(),@object() @integer()- Составного типа
@scalar()(который также принимаетundefinedи неконечные числа при запросах к объектам JavaScript, а также все базовые не-объектные/не-функциональные типы) @other(), используемый совместно с определённым пользователемotherTypeCallback- Не-JSON типов, которые тем не менее можно использовать при запросах к не-JSON объектам JavaScript (
@undefined(),@function(),@nonFinite())
- Базовых типов JSON:
- Сокращённые селекторы
@path/@parent/@property/@parentProperty/@rootвнутри фильтров - Экранирование
`для экранирования оставшейся последовательности- Синтаксис
@['...']/?@['...']для экранирования специальных символов внутри имён свойств в фильтрах
- Документирование
$..(получение всех родительских компонентов)
- Форматы экспорта ESM и UMD
- Помимо запрашиваемых значений, может возвращать различную метаинформацию, включая пути или указатели на значение, а также родительский объект и имя родительского свойства (для возможности модификации).
- Утилиты для преобразования между путями, массивами и указателями
- Опция для предотвращения вычислений, разрешённых в исходной спецификации, или предоставления песочницы для вычисляемых значений.
- Опция для обратного вызова для обработки результатов по мере их получения.
Бенчмаркинг
jsonpath-plus стабильно показывает высокую производительность как на больших, так и на малых наборах данных по сравнению с другими библиотеками запросов к JSON, согласно json-querying-performance-testing. Вы можете проверить эти результаты, запустив проект самостоятельно и добавив больше тестов производительности.
Установка```shell
npm install jsonpath-plus
## Setup
### Node.js```js
const {JSONPath} = require('jsonpath-plus');
const result = JSONPath({path: '...', json});
Browser
Для использования в браузере вы можете напрямую подключить dist/index-browser-umd.cjs; никакой магии Browserify не требуется:```html
### ESM (современные браузеры)
Вы также можете использовать импорт ES6-модулей (для современных браузеров):```html
<script type="module">
import {
JSONPath
} from './node_modules/jsonpath-plus/dist/index-browser-esm.js';
const result = JSONPath({path: '...', json: {}});
</script>
ESM (Бандлеры)
Или, если вы собираете свой JavaScript (например, с помощью Rollup), просто используйте,
учитывая, что mainFields
должен включать browser для браузерных сборок (для Node значение по умолчанию, которое
проверяет module, должно подойти):```js
import {JSONPath} from 'jsonpath-plus';
const result = JSONPath({path: '...', json});
## Использование
Полная доступная сигнатура:```
const result = JSONPath([options,] path, json, callback, otherTypeCallback);
Аргументы path, json, callback и otherTypeCallback
могут быть альтернативно выражены (наряду с любыми другими из
доступных свойств) в options.
Обратите внимание, что result будет содержать все найденные элементы (при необходимости
обёрнутые в массив), тогда как callback можно использовать, если вы
хотите выполнить какую-либо операцию по мере обнаружения каждого элемента, при этом
функция обратного вызова будет выполнена от 0 до N раз в зависимости
от количества независимых элементов, которые необходимо найти в результате.
Подробнее о доступных аргументах JSONPath см. в документации ниже.
См. также документацию по API.
Свойства
Свойства, которые можно указать в объекте options или в методе evaluate (в качестве первого аргумента), включают: