Назад к обновлениям
New releaseAug 17, 2026

JSONPath v10.4.1

Форк JSONPath с http://goessner.net/articles/JsonPath/

Поделиться

npm

testing badge coverage badge

Known Vulnerabilities

Licenses badge

Node.js CI status

(см. также лицензии для 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())
    • Сокращённые селекторы @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 (в качестве первого аргумента), включают:

Категории