JSONPath онлайн

Достаёт поля из большого JSON по пути $.items[0].id или $.users[*].email — чтобы не искать ключ глазами и проверить выборку до кода.

Значение копируйте в фикстуру, в jq-подобный скрипт, в тест. Фильтров ?() и jq-пайпов нет. Секреты из ответа в публичное поле не кладите.

Данные

Вставьте сюда данные, которые нужно преобразовать, проверить или разобрать.

Адрес в документе: $.items[0].id, $.users[*].email или items[0].name без доллара.

Как пользоваться

Вставьте документ и путь вроде $.users[0].email или $.items[*].id. Корень можно писать без доллара: items[0].name.

Как интерпретировать результат

Одно совпадение — само значение. Несколько — JSON-массив. Пусто — путь не попал в структуру; проверьте имена ключей и [*].

Зачем путь, если есть глаза

Ответ API на три экрана. Нужен один id, все email вложенного массива, первый элемент. JSONPath — короткий адрес: $.data.users[0].email, $.items[*].id. Так же пишут выборки в тестах, в Kubernetes JSONPath, в части ETL.

Сначала прогоните путь здесь, потом вставьте в код. Опечатка в ключе сразу видна: «совпадений нет», а не пустой продовый отчёт.

Что умеет этот диалект

Корень $, точки, индексы [0] и [-1], ключи в кавычках ['my.key'], звёздочка [*] по массиву или по значениям объекта. Если после массива написать .id без [*], сервис пройдёт по элементам-объектам — удобная вольность, не весь стандарт Stefan Goessner.

Нет фильтров ?(@.price<10), рекурсии $.., пайпов jq. Для сложной логики возьмите jq локально. Слишком широкая * на огромном документе обрежется лимитом совпадений.

Как читать результат

Одно значение печатается как JSON-скаляр или объект. Несколько — массив. Это удобно копировать в фикстуру. Форматтер JSON на соседней странице только красив, путь не извлекает.

Kubernetes kubectl -o jsonpath= часто строже к точкам. Сверьтесь с документацией ресурса. Секреты из ответа в публичное поле лучше не класть.

Частые вопросы

Это jq?

Уже. Нет пайпов, фильтров ?() и рекурсии $... Поддержаны ключи, индексы и *.

Все id из массива?

$.items[*].id или $.items.id — второе тоже пройдёт по элементам-объектам.

Ключ с точкой?

Берите ['my.key'].

Отрицательный индекс?

$[-1] — последний элемент массива.

JSONPath в Kubernetes?

Часто другой диалект. Сверьте с документацией контроллера, не копируйте слепо.

Как взять все имена из массива?

$.users[*].name или $.users.name. Если users — объект, не массив, * обойдёт его значения.

Это JSON Pointer RFC 6901?

Нет. Pointer пишется /foo/0/bar и используется в JSON Patch. Здесь точечная нотация JSONPath.