Запросы 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)

  1. Вставьте JSON в поле Исходный JSON (или нажмите на пример — он заодно загрузит тестовые данные).
  2. Введите Выражение JSONPath, например $..price.
  3. Прочитайте найденные значения в результате; подпись показывает число совпадений.
  4. Скопируйте массив результата кнопкой Копировать.

Пример

Ввод
{"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 в результатах запроса могут округляться.

Что сделать дальше

JSON в TypeScript
Создавайте интерфейсы или псевдонимы типов TypeScript по образцу JSON: необязательные ключи, объединения с null и вложенные типы, выведенные из массивов. Бесплатно и приватно.
JSON в структуру Go
Превращайте JSON в структуры Go с экспортируемыми именами полей, тегами json, указателями для null и необязательным omitempty. Вложенные объекты и массивы. Бесплатно.
JSON в Python
Преобразуйте JSON в классы dataclass или TypedDict на Python с аннотациями типов, полями Optional и вложенными классами в порядке зависимостей. Бесплатно, в браузере.
Экранирование строк
Один инструмент для экранирования и обратного преобразования строк для JSON, JavaScript, HTML, XML, компонентов URL, регулярных выражений, SQL, CSS и аргументов оболочки.
JSON в XML
Преобразуйте JSON в корректный XML: настраиваемый корневой элемент, атрибуты через ключи «@_», повторяющиеся элементы для массивов и необязательная XML-декларация. Бесплатно.
XML в JSON
Преобразуйте XML в JSON: атрибуты сохраняются под префиксом, повторяющиеся элементы становятся массивами, есть разбор чисел и логических значений и понятные ошибки синтаксиса.

Другие категории