
Форк 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
const {JSONPath} = require('jsonpath-plus');
const result = JSONPath({path: '...', json});
Для использования в браузере вы можете напрямую подключить dist/index-browser-umd.cjs; никакой магии Browserify не требуется:
<script src="node_modules/jsonpath-plus/dist/index-browser-umd.cjs"></script>
<script>
const result = JSONPath.JSONPath({path: '...', json: {}});
</script>
Вы также можете использовать импорты модулей ES6 (для современных браузеров):
<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, должно подойти):
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 (в качестве первого аргумента), включают: