Тестер JSONPath
Перевіряйте вирази JSONPath на власному JSON у браузері. Фільтри, зрізи, рекурсивний спуск, шляхи та JSON Pointer, з готовими прикладами.
Як перевірити вираз JSONPath
- Вставте свій JSON у поле Дані JSON або натисніть Завантажити зразок даних, щоб скористатися класичним прикладом книгарні.
- Введіть вираз у полі Вираз JSONPath або виберіть його зі списку Приклади.
- Результат оновлюється під час введення; кнопка Виконати запит запускає його знову. Рядок стану показує кількість збігів.
- За допомогою Показувати перемикайтеся між Значення, Шляхи, JSON Pointer і Шляхи й значення, а потім скопіюйте результат.
Синтаксис JSONPath коротко
| Синтаксис | Значення | Приклад |
|---|---|---|
$ |
корінь документа | $ |
.name або ['name'] |
дочірній елемент | $.store.bicycle |
* |
кожен дочірній елемент | $.store.* |
.. |
рекурсивний спуск, на будь-якій глибині | $..author |
[n] |
індекс масиву, від 0 | $..book[2] |
[start:end:step] |
зріз; від’ємні числа відлічуються з кінця | $..book[-1:] |
[a,b] |
об’єднання | $..book[0,1] |
[?(expr)] |
фільтр | $..book[?(@.price < 10)] |
^ |
батьківський елемент кожного збігу | $..book[?(@.price > 20)]^ |
~ |
назва властивості замість значення | $.store.*~ |
Результати повертаються в порядку документа. Варіант Шляхи дає нормалізовані шляхи на кшталт $['store']['book'][0]['title'], а JSON Pointer – форму з RFC 6901 /store/book/0/title, зручну для JSON Patch або для шляхів помилок у валідаторів JSON Schema.
Вирази фільтрів: що підтримується
Фільтри обчислюються за допомогою jsonpath-plus у безпечному режимі: вираз розбирає й інтерпретує невеликий обчислювач, і він ніколи не передається в eval чи new Function. Усередині [?( … )] можна використовувати:
@для поточного елемента,@.fieldта@['field']для його членів,@rootдля всього документа ($усередині фільтра недоступний);- порівняння
==,!=,===,!==,<,<=,>,>=; - логіку
&&,||,!, арифметику+ - * / %і тернарний операторa ? b : c; - літерали рядків, чисел,
true,false,nullі регулярних виразів; - методи самих значень, наприклад
@.title.startsWith('S'),@.tags.includes('new')або@.title.match(/lord/i); @property(ключ чи індекс поточного елемента),@parentі@path(його нормалізований шлях) у стилі jsonpath-plus.
Доступ до constructor, __proto__ та конструктора Function заблоковано. Якщо фільтр завершується помилкою для одного елемента, наприклад @.isbn.startsWith('0') для книги без isbn, цей елемент просто не збігається; синтаксична помилка у виразі повідомляється. Фільтри, записані за RFC 9535, [?@.price < 10] без дужок, приймаються й читаються як [?(@.price < 10)]. Функції RFC 9535, як-от length(), count(), match() і search(), недоступні: користуйтеся методами JavaScript, наприклад @.name.length.
Селектори типів із jsonpath-plus також працюють наприкінці шляху: $..*@number() повертає кожне число, а @string(), @boolean(), @array(), @object(), @null() та @integer() роблять те саме для інших типів.
Поширені запитання
Чи надсилається мій JSON на сервер?
Ні. Розбір і обчислення відбуваються у вашому браузері, а ваші дані ніколи не залишають ваш комп’ютер.
Чому мій фільтр нічого не повертає?
Перевірте, що шлях перед фільтром вибирає масив або об’єкт: $.store.book[?(@.price < 10)] фільтрує книги, а $.store[?(@.price < 10)] розглядає book і bicycle. Властивість, якої бракує в елементі, є undefined, тож порівняння з нею хибні.
Чим відрізняються `==` і `===`?
Як і в JavaScript, == перетворює типи ("10" == 10 – істина), а === порівнює тип і значення.
Чому вивід обмежено?
До результату записуються лише перші 10 000 збігів, щоб сторінка лишалася чуйною; рядок стану показує повну кількість.
Чи стандартизовано JSONPath?
Так, з 2024 року, у RFC 9535. Реалізації все ще відрізняються, особливо у фільтрах; цей інструмент дотримується jsonpath-plus – синтаксису оригінального JSONPath Стефана Ґьоснера.
Схожі інструменти
- Форматувальник і валідатор JSON Безкоштовний форматувальник і валідатор JSON: форматує, мінімізує та перевіряє JSON у браузері й показує помилки синтаксису з рядком і стовпцем.
- Валідатор JSON Schema Перевірте документ JSON за схемою JSON Schema у браузері. Кожна помилка наведена зі шляхом у документі, ключовим словом і шляхом у схемі.
- Тестер регулярних виразів Перевіряйте регулярні вирази JavaScript наживо: підсвічені збіги, групи захоплення, заміна та просте пояснення кожного токена шаблону.