onlinetools.dev

Тестер JSONPath

Запрашивайте JSON выражениями JSONPath и смотрите каждое совпадение с путём

Работает локально
loading…
Об этом инструменте

Тестируйте JSONPath-выражения на собственном JSON и смотрите каждое совпадение вместе со значением и конкретным путём. Поддерживается синтаксис, покрывающий повседневные задачи: точечная и скобочная нотация, индексы массивов (включая отрицательные), подстановочные знаки, объединения (['a','b']) и рекурсивный спуск ($..price).

Вывод пути для каждого совпадения — незаметно полезная часть: выполните запрос $..id к глубокому документу, и каждый результат скажет, где именно он находится ($.data.items[3].id), готовый для вставки в код. Это превращает «где-то в этом блобе» в точный адрес.

Выражения-фильтры ([?(@.price < 10)]) пока не реализованы — инструмент говорит об этом явно, вместо того чтобы возвращать неверные результаты. Для структурного извлечения, а это большинство применений JSONPath, всё работает.

Частые вопросы

В чём разница между $.a.b и $..b?
$.a.b идёт одним точным маршрутом: ключ a в корне, затем ключ b внутри него. $..b (рекурсивный спуск) находит каждый b в любом месте документа на любой глубине. Рекурсивный спуск мощный, но может удивить — он находит и ключи b, вложенные туда, о чём вы не подумали.
Как обратиться к ключам с пробелами или дефисами?
Скобочная нотация с кавычками: $['my key'] или $.data['content-type']. Точечная нотация работает только для ключей, похожих на допустимые идентификаторы.
Работают ли отрицательные индексы массивов?
Да — [-1] это последний элемент, [-2] предпоследний, по соглашению, популяризированному Python и принятому в RFC 9535. [0] остаётся первым элементом.
Стандартизирован ли JSONPath?
С 2024 года — да: RFC 9535 определяет синтаксис и семантику. Реализации, написанные до него, различаются в краевых случаях (особенно фильтры и объединения), поэтому одно и то же выражение может вести себя по-разному в разных библиотеках; тестируйте на той реализации, с которой развёртываетесь.
Похожие инструменты