JSONPath Tester

Вставьте JSON-документ и введите выражение типа JSONPath, например $..book[?(@.price<10)]. Тестер оценит его по данным документа и отобразит все соответствующие значения с точным указанием пути каждого соответствия. Это полезно для проверки запроса, который вы собираетесь вставить в скрипт или спецификацию API (Postman, k6 и JMeter поддерживают JSONPath).

Как проверить выражение JSONPath

  1. 1

    Вставьте JSON-документ

    Любой действительный JSON-объект, объект, массив или глубоко вложенный JSON-объект.

  2. 2

    Введите выражение

    Начните с `$` для корня; используйте `.` для дочернего узла, `..` для рекурсивного обхода и `[*]` для подстановочного символа.

  3. 3

    Просматривайте совпадения в реальном времени

    Каждое совпадение отображается с указанием его значения и полного JSONPath, выделенного в исходном документе.

  4. 4

    Копируйте результаты

    Копируйте результаты сопоставления в виде массива JSON или копируйте каждый отдельный путь для использования в последующем коде.

Справочник по синтаксису JSONPath

Выражение Значение
$ Корневой элемент
$.store Дочерний элемент $ с именем store
$["store"] То же самое, в форме скобок
$..author Все свойства author на любом уровне вложенности
$.store.book[*] Все книги в магазине
$.store.book[0] Первая книга
$.store.book[-1:] Последняя книга
$.store.book[0:2] Первые две книги (срез)
$.store.book[?(@.isbn)] Книги со свойством isbn
$.store.book[?(@.price < 10)] Книги дешевле 10
$.store.book[?(@.category == "fiction")] Художественные книги
$..* Каждое значение, где угодно

Выражения фильтров

В выражениях фильтров используется @ для указания на текущий узел. Тестер поддерживает распространённые операторы ==, !=, <, >, <=, >=, &&, ||, а также регулярные выражения =~.

$.items[?(@.qty >= 10 && @.price < 50)]

Диалекты JSONPath

Существует несколько реализаций JSONPath с небольшими несовместимостями. Данный тестер следует исходной спецификации Goessner и уточнениям RFC 9535 и совместим со следующими библиотеками:

  • Jayway JsonPath (Java)
  • jsonpath-plus (JavaScript)
  • jsonpath-rw (Python)
  • базовые выражения путей jq

Несовместимые возможности (например, выражения-скрипты с произвольным кодом на JavaScript) отмечаются в панели ошибок.

Когда JSONPath лучше полноценного парсера

  • Проверки в тестах: pm.expect(jsonData).to.have.jsonPath(...) в Postman принимает путь.
  • Извлечение конфигурации: получить одно значение из огромного ответа API без библиотеки.
  • Скрипты нагрузочного тестирования: k6, JMeter и Gatling поддерживают JSONPath для проверок.
  • Kubernetes / AWS CLI: флаги --query и --jsonpath позволяют формировать вывод из командной строки.

Типичные ошибки

  • Использование . для массива. $.users.0.name неверно; используйте $.users[0].name.
  • Пропуск .. для указания глубины. Путь вроде $.name соответствует только name верхнего уровня; используйте $..name, чтобы найти все.
  • Путаница JSONPath с jq. jq, это надмножество с потоком управления и преобразованиями; JSONPath служит исключительно для извлечения.
  • Привязка регулярных выражений. =~ /foo/ соответствует подстрокам; используйте /^foo$/ для точного совпадения.

Часто задаваемые вопросы

JSONPath, это исключительно язык извлечения данных: он позволяет выбирать данные, фильтровать их и выделять нужные фрагменты. jq же представляет собой полноценный язык запросов и преобразований с поддержкой управления потоком выполнения, переменных и функций. Для простого извлечения данных JSONPath более универсален; для сложных преобразований лучше использовать jq.

Оригинальные спецификации Goessner в сочетании с усовершенствованиями из RFC 9535; совместимы с JaywayJsonPath (Java) и jsonpath-plus (Node). Расширения, специфичные для конкретных диалектов (выражения скриптов с произвольным кодом), не поддерживаются.

Да. Значение $..book[?(@.title =~ /^Harry.*/)] соответствует всем книгам, названия которых начинаются с «Harry». Для полного совпадения используйте ^ и $.

Да. И JSON, и вычислитель JSONPath работают в вашем браузере; ваш документ и все запросы никогда не покидают эту вкладку.

Сопутствующие инструменты

Генератор вымышленных телефонных номеров

Создавайте до 50 вымышленных номеров из официально зарезервированных диапазонов пяти стран.

Генератор конфигурации webpack

Создайте webpack.config.js для webpack 5 под чистый JavaScript, React или Vue: TypeScript, Babel, CSS или Sass, изображения, HtmlWebpackPlugin, dev-сервер и команда npm install.

Генератор случайных букв

Генерируйте случайные буквы A-Z. Выберите количество, верхний или нижний регистр либо смешанный вариант для игр, заданий и уроков.

Валидатор XSD

Проверьте XML-документ в соответствии с схемой XSD и выявите несоответствия между элементами и их типами, указав точные номера строк.

Генератор случайных адресов

Создавайте 1–20 похожих на адрес записей для макетов и тестов в трёх упрощённых форматах.

Конвертер размера файлов

Преобразуйте значения между байтами, КБ, МБ, ГБ, ТБ и двоичными единицами IEC (KiB, MiB, GiB, TiB), свободно сочетая десятичные и двоичные единицы.

Инструмент доступен на других языках