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 работают в вашем браузере; ваш документ и все запросы никогда не покидают эту вкладку.

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

Справочная таблица ASCII

Полная таблица ASCII от 0 до 127 с десятичным, шестнадцатеричным, восьмеричным и двоичным представлением, а также записью числовых ссылок HTML, включая NUL, LF и DEL.

Справочник сочетаний клавиш

Ищите документированные сочетания по умолчанию для VS Code, Chrome и Bash с GNU Readline в macOS, Windows и Linux.

Справочник символов HTML

Справочник HTML-сущностей с поиском, их именованными и числовыми кодами, а также копированием специальных символов и знаков одним кликом.

Шпаргалка по Markdown

Практический справочник Markdown с настоящим предпросмотром и готовыми для копирования примерами заголовков, списков, таблиц, кода, ссылок, изображений и синтаксиса GFM.

Счетчик FPS

Измерьте FPS браузера через requestAnimationFrame: сглаживание, минимальная и максимальная частота кадров, порог предупреждения и график по желанию. Работает локально, без загрузок и API.

Шпаргалка по регулярным выражениям

Поисковый справочник регулярных выражений для JavaScript, PCRE2/PHP, Python re и .NET. Сравнивайте токены, синтаксис движков, якоря, группы, проверки и флаги.

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