Проверка выражений JSONPath по JSON и XPath по XML: найденные значения, пути, номера строк, пространства имён.
Данные обрабатываются в браузере и никуда не отправляются
Здесь появится результат
Введите данные слева - результат появится сразу
Выберите язык запросов, вставьте данные слева и напишите выражение под ними - результат появляется сразу. JSONPath ищет значения в JSON ($.store.book[*].title, фильтры вроде [?(@.price < 10)], рекурсивный спуск $..price), XPath - узлы в XML (//book[price < 10]/title, count(//book), атрибуты @id). В таблице для каждого совпадения показан путь, значение и место в данных: номер строки для JSON или тип узла для XML.
Для XML в пространстве имён используйте префиксы, объявленные в документе (@meta:state). Пространство имён по умолчанию (xmlns без префикса) в XPath 1.0 недоступно по умолчанию - здесь оно доступно под префиксом def: //def:item/def:name. Ещё можно написать //*[local-name()="item"].
Вот что чаще всего не срабатывает в выражениях:
XPath не находит элементы в документе с xmlns
Если у корня стоит xmlns="...", все элементы лежат в этом пространстве имён, и //item их не найдёт. Используйте префикс def: (//def:item) или local-name().
Регистр имён и кавычки
И JSONPath, и XPath различают регистр: Price и price - разные поля. В XPath строки пишутся в кавычках, внутри условия лучше брать другой тип кавычек, чем у самого выражения.
Разные диалекты JSONPath
Стандарт JSONPath (RFC 9535) появился недавно, а библиотеки реализуют его по-разному. Простые пути, [*], .., срезы и фильтры [?(@.x > 1)] работают везде, а функции и особые операторы - не обязательно.
Фильтр по числу и по строке
В фильтре price < 10 сравнивается число, а если значение лежит строкой ("8.95"), условие сработает не так, как ожидается. Смотрите тип значения в данных.
Индексы с нуля и с единицы
В JSONPath элементы массива нумеруются с нуля ([0] - первый), а в XPath с единицы (book[1] - первый). Это самая частая причина «сдвига на один».
Выражение не ищет в данных, которые не JSON/XML
Данные сначала разбираются как JSON или XML. Если там ошибка, выражение не выполняется, а ошибка показывается со строкой и столбцом.
Нет - 100%. Сайт целиком статический, у него нет серверной части. JSONPath и XPath выполняются в вашем браузере.
XPath придуман для XML и поддерживается браузерами и многими языками. JSONPath - его аналог для JSON: те же идеи (путь, фильтры, рекурсивный спуск), но другой синтаксис и нет единой реализации. Для XML используйте XPath, для JSON - JSONPath.
XPath 1.0 - тот, что встроен в браузеры. В нём нет функций XPath 2.0 и выше (например, matches(), upper-case(), if/then/else), зато есть count(), sum(), contains(), starts-with(), substring(), translate(), normalize-space().
JSONPath-фильтры вычисляются встроенным интерпретатором без eval и прямого доступа к странице. Это снижает риск выполнения кода, но сложное выражение или большой документ всё равно могут нагрузить браузер. Выполняйте только понятные вам выражения.
Добавьте text() или @атрибут: //title/text() вернёт текст, //book/@id - значения атрибутов. Функции string(), count(), sum() возвращают одно значение.
Да: под результатом есть кнопки «Копировать» и «Скачать». Для JSONPath результат - JSON-массив найденных значений.
REST, gRPC, SOAP, GraphQL и JSON-RPC, архитектурные подходы, SQL и NoSQL, брокеры сообщений и работа с ИИ. Программа курса помогает систематизировать знания об API и интеграциях; содержание и условия обучения смотрите на Stepik.