Проверка JSONPath

Вставьте документ JSON и введите запрос JSONPath. Вы получите число совпадений и для каждого из них нормализованный путь и значение. Запрос выполняется в вашем браузере, ничего никуда не отправляется.

Бесплатно Работает в браузере Проверено вторник, 10 ноября 2026 г.

Текст должен быть действительным JSON. Пример — документ книжного магазина из RFC 9535, раздел 1.5.

Начинается с $, корня. В фильтрах @ означает проверяемый элемент, как в [[email protected] < 10]. Пробелы в начале и в конце игнорируются.

Результат

Совпадения — Число узлов, которые выбирает запрос. Узел может быть выбран несколько раз, если запрос повторяет его.
Совпадения по порядку

Этот инструмент работает в вашем браузере. То, что вы вводите, нам не отправляется.

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

  1. Вставьте документ JSON в поле Документ JSON. Чтобы сначала попробовать инструмент, используйте пример.
  2. Введите Запрос JSONPath в поле под ним, начиная с $. Фильтры ставятся в скобки: [[email protected] < 10].
  3. Прочитайте счётчик Совпадения, затем таблицу Совпадения по порядку: каждая строка содержит путь совпадения и его значение.
  4. Если сообщение показывает позицию проблемы, посмотрите на этот символ запроса и исправьте скобки, кавычки или точки.

Как запрос выбирает узлы

Запрос — это список сегментов после $. Дочерний сегмент, например .store или [0], выбирает дочерние узлы каждого достигнутого узла, а сегмент потомков, например ..author, сначала обходит узел и всех его потомков. Узлы одного сегмента идут в порядке входных данных, а массив всегда читается по порядку (RFC 9535, разделы 2.5 и 2.5.2.2).

Селектор имени совпадает только с членом объекта с точно таким именем и только в объекте. Отрицательный индекс считает с конца массива, поэтому −1 — последний элемент. Срез вроде [1:5:2] берёт начало, конец и шаг, а шаг 0 не выбирает ничего (раздел 2.3.4.2).

Фильтры, функции и то, что инструмент отклоняет

Фильтр [?...] проверяет каждого потомка массива или объекта. Сравнения используют ==, !=, <, <=, > и >=; операторы &&, || и ! объединяют проверки, а скобки группируют их. Отсутствующий член — это Nothing, и два значения Nothing равны. Числа сравниваются с числами, текст — с текстом, а значение одного типа никогда не равно значению другого типа (раздел 2.3.5.2).

Функции length, count, value, match и search поддерживаются так, как их определяет RFC 9535. match и search принимают регулярное выражение в формате I-Regexp, описанном в RFC 9485; шаблон, который не является допустимым I-Regexp, ничего не находит. Литералы массивов и объектов не входят в грамматику, поэтому инструмент их отклоняет. Он отклоняет и результат функции, используемый сам по себе в фильтре, потому что RFC 9535 считает это неправильно типизированным.

Пример книжного магазина

С примером документа и запросом $.store.book[[email protected] < 10].title книги дешевле 10 — первая и третья. Их названия — два совпадения ниже, с нормализованным путём каждого.

Нормализованный путь Значение (JSON)
$['store']['book'][0]['title'] "Sayings of the Century"
$['store']['book'][2]['title'] "Moby Dick"

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

Почему запрос ничего не возвращает, когда ключ есть?

Селектор имени совпадает только с членом объекта с точно таким же именем, и сравнение чувствительно к регистру. Он никогда не совпадает с элементом массива, поэтому для массива используйте индекс или подстановочный знак.

Почему 13 и «13» не равны в фильтре?

RFC 9535 считает значения разных типов неравными (раздел 2.3.5.3). Число и текст — разные значения, поэтому == ложно, а != истинно, даже когда символы выглядят одинаково.

Что выбирает отрицательный индекс?

Отрицательный индекс считает с конца массива: −1 — последний элемент, а −2 — предыдущий. Индекс за пределами массива ничего не выбирает и не является ошибкой (раздел 2.3.3.2).

Почему инструмент отклоняет length(@), когда он стоит один в фильтре?

length возвращает число, а фильтру нужна проверка, истинная или ложная. Сравните результат, как в [?length(@.title) > 15], — это правильно типизировано.

Инструмент отправляет мой JSON на сервер?

Нет. Документ читает ваш браузер с помощью JSON.parse, запрос выполняется там же, и ничего не сохраняется. Страница не делает сетевых запросов.

Источники

Цифры и текст в последний раз проверены вторник, 10 ноября 2026 г..

Мы используем необходимые cookie, чтобы сайт работал. С вашего согласия Google также использует рекламные cookie, чтобы показывать персонализированную рекламу. Если вы откажетесь, реклама всё равно будет показываться, но не будет персонализированной.