
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. Вы можете проверить эти результаты, запустив проект самостоятельно и добавив больше тестов производительности.
Установка
npm install jsonpath-plus
Установка
Node.js
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>
ESM (современные браузеры)
Вы также можете использовать импорты модулей ES6 (для современных браузеров):
<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, должно подойти):
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 (в качестве первого аргумента), включают: