
Форк JSONPath с http://goessner.net/articles/JsonPath/
(см. также лицензии для dev. зависимостей)
Анализируйте, преобразовывайте и выборочно извлекайте данные из JSON-документов (и объектов JavaScript).
jsonpath-plus расширяет исходную спецификацию, добавляя некоторые дополнительные операторы и явно определяя поведение, которое оригинал не описывал.
Попробуйте браузерное демо или Runkit (Node).
Обратите внимание: этот проект в настоящее время не поддерживается активно. Мы можем принять хорошо документированные PR или некоторые простые обновления, но не планируем вносить исправления или добавлять новые функции самостоятельно.
^ для получения родителя совпадающего элемента~ для получения имён свойств совпадающих элементов (в виде массива)@null(), @boolean(), @number(), @string(), @array(), @object()@integer()@scalar() (который также принимает undefined и неконечные числа при запросах к объектам JavaScript, а также все базовые не-объектные/не-функциональные типы)@other(), используемый совместно с определённым пользователем otherTypeCallback@undefined(), @function(), @nonFinite())@path/@parent/@property/@parentProperty/@root внутри фильтров` для экранирования оставшейся последовательности@['...']/?@['...'] для экранирования специальных символов внутри имён свойств в фильтрах$.. (получение всех родительских компонентов)jsonpath-plus стабильно показывает высокую производительность как на больших, так и на малых наборах данных по сравнению с другими библиотеками запросов к JSON, согласно json-querying-performance-testing. Вы можете проверить эти результаты, запустив проект самостоятельно и добавив больше тестов производительности.
npm install jsonpath-plus
## Setup
### Node.js```js
const {JSONPath} = require('jsonpath-plus');
const result = JSONPath({path: '...', json});
Для использования в браузере вы можете напрямую подключить 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>
Или, если вы собираете свой 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 (в качестве первого аргумента), включают: