Тестер JSONPath
Вставьте JSON и интерактивно тестируйте выражения JSONPath. Просматривайте результаты совпадений в реальном времени с примерами путей для быстрого начала работы.
Ввод
Вывод
Документация
Что такое JSONPath?
JSONPath — это язык запросов для JSON, аналогичный XPath для XML. Он позволяет навигировать и извлекать данные из структуры JSON с помощью выражений пути. Выражение JSONPath начинается с $, которое представляет корень документа, и использует точечную нотацию (.key) или скобочную нотацию (['key']) для обхода объектов, а также [index] для доступа к элементам массива.
JSONPath был первоначально описан Стефаном Гёсснером в 2007 году и с тех пор стал широко используемым стандартом в API, фреймворках тестирования и конвейерах обработки данных. Он поддерживается во многих языках и инструментах, включая JavaScript, Python, Java и базы данных, такие как PostgreSQL и MySQL.
Описание инструмента
Этот инструмент позволяет вставить любой корректный JSON-документ и написать выражение JSONPath для его запроса. Результаты отображаются мгновенно по мере ввода, показывая все совпадающие значения в виде отформатированного JSON-массива. Количество совпадений отображается отдельно, чтобы вы могли быстро проверить, сколько узлов было выбрано.
Примеры
Входной JSON:
{
"store": {
"book": [
{ "title": "Moby Dick", "price": 8.99, "category": "fiction" },
{ "title": "War and Peace", "price": 12.5, "category": "fiction" },
{
"title": "A Brief History of Time",
"price": 7.99,
"category": "science"
}
]
}
}| Выражение | Результат |
|---|---|
$.store.book[*].title |
Все названия книг |
$.store.book[0] |
Первый объект книги |
$.store.book[?(@.price < 10)] |
Книги дешевле $10 |
$.store.book[?(@.category == "fiction")] |
Только художественные книги |
$..price |
Все значения цены в любом месте документа |
Возможности
- Оценка в реальном времени — результаты обновляются по мере ввода выражения или редактирования JSON
- Отображение количества совпадений в отдельном поле
- Кнопка копирования в поле выражения для быстрого повторного использования
- Кнопка вставки для быстрого вставления JSON или выражений из буфера обмена
- Сообщения об ошибках для некорректного JSON или неправильно сформированных выражений пути
Как это работает
Выражения JSONPath вычисляются для разобранного JSON с использованием библиотеки jsonpath-plus. Символ $ относится к корневому элементу. Дочерние узлы доступны через . или [], подстановочные символы через *, рекурсивный спуск через .., а фильтры через [?(...)]. Результат всегда представляет собой массив совпадающих значений, даже если найдено только одно совпадение.
Объяснение параметров
| Синтаксис | Значение |
|---|---|
$ |
Корневой элемент |
.key или ['key'] |
Дочернее свойство |
[*] |
Все элементы массива |
[0] |
Первый элемент массива (с нулевым индексом) |
[-1] |
Последний элемент массива |
[0,2] |
Элементы с индексами 0 и 2 |
[0:2] |
Элементы с индекса 0 по 1 (срез) |
..key |
Рекурсивный спуск — найти key на любой глубине |
[?(@.price > 5)] |
Фильтр — элементы, где price больше 5 |
@ |
Текущий узел (используется в выражениях фильтра) |
Варианты использования
- Разработка API — проверка того, что селектор JSONPath, используемый в REST-клиенте, наборе тестов или инструменте сопоставления данных, извлекает ожидаемые поля из ответа API
- Преобразование данных — определение того, какие значения нужно извлечь из вложенных JSON-полезных нагрузок перед написанием скрипта преобразования
- Изучение JSONPath — интерактивное экспериментирование с синтаксисом пути для понимания того, как операторы типа
..,[*]и[?()]работают с реальными данными
Советы
- Используйте
$..*для получения каждого значения во всем документе — полезно для исследования неизвестных JSON-структур. - Выражения фильтра поддерживают сравнения (
==,!=,<,>,<=,>=) и могут ссылаться на вложенные свойства:[?(@.author.name == "Rees")]. - Чтобы найти свойство независимо от его глубины, используйте рекурсивный спуск
..:$..titleнаходит все поляtitleв любом месте документа.