DevToolPal
RU

Проверка JSONPath

Выполните запрос JSONPath к JSON и посмотрите все найденные значения и их пути, с фильтрами и функциями (RFC 9535).

Работает локально, без загрузки на сервер

Параметры

Показать

JSON

Символов: 0 · 0 B

Совпадения

Символов: 0 · 0 B

Что это такое

JSONPath — язык запросов для JSON, примерно то же, что XPath для XML. Запрос вроде $.store.book[*].title проходит по документу и выбирает нужные значения. Этот инструмент выполняет выражение JSONPath над вставленным JSON и выводит все совпадения в виде массива JSON: найденные значения, их нормализованные пути (например, $['store']['book'][0]['title']) или и то и другое.

Инструмент следует RFC 9535 — стандарту IETF, опубликованному в 2024 году, поэтому результаты совпадают с современными библиотеками для JavaScript, Java, Python, Go и других языков. Пользуйтесь им, чтобы проверить запрос до того, как вставить его в код, выяснить, почему фильтр ничего не находит, или вытащить несколько полей из большого ответа API.

Как пользоваться

  1. Вставьте JSON в поле JSON, загрузите файл .json или нажмите Пример, чтобы открыть классический документ книжного магазина.
  2. Введите запрос в поле Выражение JSONPath. Совпадения обновляются по мере ввода.
  3. Выберите, что Показать: значения, пути или пары путь/значение.
  4. Скопируйте или скачайте результат. При синтаксической ошибке указывается символ, на котором разбор остановился.

Шпаргалка по синтаксису

ВыражениеЗначение
$Корень документа
.name или ['name']Член объекта
[0], [-1]Элемент массива (отрицательные считаются с конца)
[1:3], [::2]Срез: начало, конец (не включается) и шаг
*Все члены или элементы
..namename на любой глубине
[?@.price < 10]Дочерние элементы, для которых фильтр истинен; @ — текущий элемент

В фильтрах можно объединять условия через &&, || и !, сравнивать с другими частями документа через $ и вызывать функции: length(@.tags) > 2, count(@.items[*]) == 0, match(@.code, '[A-Z]{3}') — вся строка должна соответствовать регулярному выражению, search(@.title, 'Ring') — совпадение в любом месте строки.

Пример

Для примера книжного магазина этот запрос выбирает названия книг дешевле 10:

$.store.book[?@.price < 10].title

и возвращает:

["Sayings of the Century", "Moby Dick"]

Замените его на $..book[?@.isbn].author, чтобы получить авторов книг с ISBN, или на $..price, чтобы собрать все цены магазина, включая цену велосипеда.

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

› Какой синтаксис JSONPath поддерживается?

Стандартный синтаксис RFC 9535: имена членов через точку и в квадратных скобках, подстановочный знак, индексы массивов (в том числе отрицательные), срезы, поиск на любой глубине через .., фильтры со сравнениями и && || !, а также функции length(), count(), match(), search() и value(). Старая запись ?(@.price < 10) тоже работает, потому что скобки лишь группируют.

› Почему запрос возвращает пустой массив?

Пустой массив означает, что запрос корректен, но ничего не найдено. Проверьте имена членов (регистр важен) и то, массив перед вами или объект. Широкий запрос вроде $..* с режимом «Пути» покажет, что есть в документе.

› Можно ли использовать скриптовые выражения вроде [(@.length-1)]?

Нет. Скриптовые выражения выполняют произвольный код и не входят в стандарт. Используйте отрицательный индекс: [-1] — последний элемент, [-2:] — два последних.

› Отправляется ли мой JSON на сервер?

Нет. Запрос разбирается и выполняется в вашем браузере собственным кодом страницы; ничего не загружается.