Запросы JSON через JSONPath
Запросы к JSON через JSONPath: подстановки, рекурсивный поиск, срезы и фильтры вида [?(@.price < 10)]. Результат обновляется по мере ввода. Это не jq.
$ — корень; .name или ['name'] выбирает дочерний элемент; [0] — элемент массива; [*] — все элементы; .. ищет на любой глубине; [?(@.price < 10)] фильт рует; [-1:] берёт последний элемент.
Работает полностью в вашем браузере. Ваши данные никуда не загружаются.
Похожие Инструменты
Просмотреть ВсеЧто такое Запросы JSON (JSONPath)?
Инструмент вычисляет выражения JSONPath для вашего JSON и показывает все найденные значения в виде массива JSON. Поддерживаются подстановки, рекурсивный поиск, срезы массивов и фильтры. Важно: используется синтаксис JSONPath ($.store.book[*].title), а не конвейерный синтаксис jq.
Как пользоваться Запросы JSON (JSONPath)
- Вставьте JSON в поле Исходный JSON (или нажмите на пример — он заодно загрузит тестовые данные).
- Введите Выражение JSONPath, например
$..price. - Прочитайте найденные значения в результате; подпись показывает число совпадений.
- Скопируйте массив результата кнопкой Копировать.
Пример
{"store":{"book":[{"title":"A","price":8},{"title":"B","price":12}]}}
Query: $.store.book[?(@.price < 10)].title [ "A" ]
Когда использовать Запросы JSON (JSONPath)
Используйте для проверки выражений JSONPath перед применением в инструментах, принимающих JSONPath (API-шлюзы, kubectl -o jsonpath в Kubernetes, тестовые фреймворки, мониторинг). Если нужны возможности jq — конвейеры, map, построение объектов, — используйте сам jq: здесь они не поддерживаются. Для одного точного пути проще поиск пути в JSON.
Как работает Запросы JSON (JSONPath)
Запросы вычисляются библиотекой jsonpath-plus (JSONPath по Гёснеру с расширениями). $ — корень, .name или ['name'] выбирает свойство, [0] — индекс, [*] — все дочерние элементы, .. ищет на любой глубине, [start:end] делает срез массива (отрицательные индексы считаются с конца), а [?(…)] фильтрует, где @ — текущий элемент. Выражения фильтров выполняются в безопасном вычислителе jsonpath-plus, который поддерживает сравнения и логические операторы, но не выполняет произвольный JavaScript. Результат всегда массив совпадений с отступом в 2 пробела.
Распространенные Случаи Использования
- Извлечение всех цен или id из ответа API
- Проверка JSONPath для тестов API или правил мониторинга
- Фильтрация элементов массива по условию
- Прототипирование запросов в стиле kubectl jsonpath
Примечание по Безопасности
Всё выполняется локально в вашем браузере: вставленный код никуда не загружается.
Часто Задаваемые Вопросы
Это jq?
Нет. Используется JSONPath — другой язык запросов. Конвейеры и функции jq не поддерживаются.
Почему результат всегда массив?
Выражение JSONPath может совпасть с любым числом значений, поэтому все совпадения возвращаются массивом.
Отправляется ли мой JSON на сервер?
Нет, запрос выполняется в вашем браузере.
Теряется ли здесь точность больших чисел?
Да, значения вычисляются как числа JavaScript, поэтому целые больше 2^53 в результатах запроса могут округляться.