JSONPath Tester
Вставьте JSON-документ и введите выражение типа JSONPath, например $..book[?(@.price<10)]. Тестер оценит его по данным документа и отобразит все соответствующие значения с точным указанием пути каждого соответствия. Это полезно для проверки запроса, который вы собираетесь вставить в скрипт или спецификацию API (Postman, k6 и JMeter поддерживают JSONPath).
Как проверить выражение JSONPath
-
1
Вставьте JSON-документ
Любой действительный JSON-объект, объект, массив или глубоко вложенный JSON-объект.
-
2
Введите выражение
Начните с `$` для корня; используйте `.` для дочернего узла, `..` для рекурсивного обхода и `[*]` для подстановочного символа.
-
3
Просматривайте совпадения в реальном времени
Каждое совпадение отображается с указанием его значения и полного JSONPath, выделенного в исходном документе.
-
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), свободно сочетая десятичные и двоичные единицы.
Инструмент доступен на других языках
- เครื่องมือทดสอบ JSON Path [TH]
- Tester JSONPath [PL]
- Công cụ kiểm thử JSONPath [VI]
- JSON Path Tester [ID]
- أداة اختبار مسارات JSON (JSONPath) [AR]
- JSONPath-Tester [DE]
- JSONPath テスター [JA]
- Testador de JSONPath [PT]
- Probador de JSONPath [ES]
- JSONPath 테스터 [KO]
- JSONPath-testare [SV]
- Testeur JSONPath [FR]
- JSON Path Tester [NL]
- JSONPath Tester [EN]
- Tester JSONPath [IT]
- JSONPath Test Aracı [TR]
- JSON路径测试器 [ZH]