Що це таке
JSONPath — мова запитів для JSON, приблизно те саме, що XPath для XML. Запит на кшталт $.store.book[*].title проходить документом і вибирає потрібні значення. Цей інструмент виконує вираз JSONPath над вставленим JSON і виводить усі збіги як масив JSON: знайдені значення, їхні нормалізовані шляхи (наприклад, $['store']['book'][0]['title']) або і те, і інше.
Інструмент відповідає RFC 9535 — стандарту IETF, опублікованому 2024 року, тож результати збігаються із сучасними бібліотеками для JavaScript, Java, Python, Go та інших мов. Користуйтеся ним, щоб перевірити запит перед тим, як додати його в код, з’ясувати, чому фільтр нічого не знаходить, або витягти кілька полів із великої відповіді API.
Як користуватися
- Вставте JSON у поле JSON, завантажте файл
.jsonабо натисніть Приклад, щоб відкрити класичний документ книгарні. - Введіть запит у поле Вираз JSONPath. Збіги оновлюються під час введення.
- Виберіть, що Показати: значення, шляхи або пари шлях/значення.
- Скопіюйте або завантажте результат. У разі синтаксичної помилки вказується символ, на якому розбір зупинився.
Шпаргалка із синтаксису
| Вираз | Значення |
|---|---|
$ | Корінь документа |
.name або ['name'] | Член об’єкта |
[0], [-1] | Елемент масиву (від’ємні рахуються з кінця) |
[1:3], [::2] | Зріз: початок, кінець (не включно) і крок |
* | Усі члени або елементи |
..name | name на будь-якій глибині |
[?@.price < 10] | Дочірні елементи, для яких фільтр істинний; @ — поточний елемент |
У фільтрах можна поєднувати умови через &&, || і !, порівнювати з іншими частинами документа через $ і викликати функції: length(@.tags) > 2, count(@.items[*]) == 0, match(@.code, '[A-Z]{3}') — увесь рядок має відповідати регулярному виразу, search(@.title, 'Ring') — збіг у будь-якому місці рядка.
Приклад
Для прикладу книгарні цей запит вибирає назви книжок, дешевших за 10:
$.store.book[?@.price < 10].title
і повертає:
["Sayings of the Century", "Moby Dick"]
Замініть його на $..book[?@.isbn].author, щоб отримати авторів книжок з ISBN, або на $..price, щоб зібрати всі ціни в магазині, разом із ціною велосипеда.
Часті запитання
› Який синтаксис JSONPath підтримується?
Стандартний синтаксис RFC 9535: імена членів через крапку та у квадратних дужках, символ підстановки, індекси масивів (зокрема від’ємні), зрізи, пошук на будь-якій глибині через .., фільтри з порівняннями та && || !, а також функції length(), count(), match(), search() і value(). Старий запис ?(@.price < 10) теж працює, бо дужки лише групують.
› Чому запит повертає порожній масив?
Порожній масив означає, що запит коректний, але нічого не знайдено. Перевірте імена членів (регістр має значення) і те, чи значення є масивом або об’єктом. Широкий запит на кшталт $..* у режимі «Шляхи» покаже, що є в документі.
› Чи можна використовувати скриптові вирази на кшталт [(@.length-1)]?
Ні. Скриптові вирази виконують довільний код і не входять до стандарту. Використовуйте від’ємний індекс: [-1] — останній елемент, [-2:] — два останні.
› Чи надсилається мій JSON на сервер?
Ні. Запит розбирається й виконується у вашому браузері власним кодом сторінки; нічого не завантажується.