Перейти к содержанию

JSONPath экстрактор

Извлекайте значения из JSON документов с помощью выражений JSONPath или JSON Pointer.

Входные данные
Выходные данные

JSONPath экстрактор

Вставьте JSON документ, напишите запрос и этот инструмент вернёт только совпадающие значения — без необходимости писать скрипт или открывать REPL для извлечения одного поля из большой структуры данных. Поддерживает два стиля запросов: выражения JSONPath типа $.users[*].email и ссылки RFC 6901 JSON Pointer типа /users/0/email. Переключайтесь между ними с помощью опции синтаксиса в зависимости от того, что у вас есть под рукой — документация API, строка журнала или отчёт об ошибке.

Поддержка JSONPath охватывает паттерны, которые люди используют на практике: точечную нотацию и доступ в скобках ($.user.name или $['user name'] для ключей с пробелами), подстановочный символ [*] для разворачивания по каждому элементу массива или каждому значению объекта, числовые индексы включая отрицательные индексы, считаемые с конца ($.items[-1]), и .. рекурсивный спуск для поиска ключа на любой глубине вложенности ($..email). Отфильтрованные выражения и диапазоны срезов не поддерживаются — если ваш запрос требует условной логики, сначала извлеките родительский массив, затем отфильтруйте его.

Два параметра форматируют результат. Опция «Список строк» выводит каждое найденное значение на отдельной строке — строки выводятся как есть, объекты и массивы выводятся как компактный JSON — это удобно для прямой передачи другому инструменту построчной обработки типа sort или dedupe. Опция «Массив JSON» оборачивает каждое совпадение в один массив JSON, полезно когда вам нужно чистое, разбираемое подмножество исходного документа. Включите опцию «Показать путь для каждого совпадения», чтобы добавить перед каждым результатом разрешённый путь, это помогает когда несколько разных полей могут правдоподобно объяснить данное значение.

Всё работает локально в вашем браузере: документ, который вы вставляете, и выражение, которое вы пишете, никогда не загружаются никуда. Это делает безопасным указание на реальные ответы API, внутренние экспорты конфигурации или выписки из журналов продакшена. Подсчёт под результатом точно показывает, сколько совпадений было найдено, поэтому неожиданный пустой результат легко отличить от запроса, который молча ничего не вернул.

FAQ

В чём разница между JSONPath и JSON Pointer?
Выражения JSONPath типа $.users[*].email могут одновременно совпадать со множеством значений, используя подстановочные символы и рекурсивный спуск. Ссылки JSON Pointer типа /users/0/email всегда разрешаются в не более одного значения — это более простая, буквальная схема адресации, распространённая в JSON Schema и полезных нагрузках HTTP PATCH.
Какие возможности JSONPath поддерживаются?
Точечная нотация и доступ в скобках, подстановочный символ [*], числовые индексы массивов (включая отрицательные) и .. рекурсивный спуск для ключа на любой глубине. Отфильтрованные выражения типа [?(@.price<10)] и диапазоны срезов типа [0:2] не поддерживаются.
Что происходит, если выражение ничего не совпадает?
Вы получите пустой результат и подсчёт 0 совпадений — это не считается ошибкой. Ошибка показывается только для неверного ввода JSON или неправильно сформированного выражения.
Могу ли я увидеть, откуда взялось каждое значение?
Включите опцию «Показать путь для каждого совпадения» и каждый результат будет предварён точным путём, по которому он был найден, в том же синтаксисе что и запрос — пути JSONPath типа $.users[0].email или исходный указатель для запросов JSON Pointer.
Загружается ли мой JSON документ куда-либо?
Нет. Анализ и обработка запросов происходят полностью в вашем браузере — документ и выражение никогда не покидают ваше устройство.