JSON-запит
Витягуйте значення з JSON виразами JSONPath або RFC 6901 JSON Pointer
JSON
Запит
JSON-запит
Витягуйте значення з JSON виразами JSONPath або RFC 6901 JSON Pointer
Можливості
- Два режими запиту поруч: JSONPath (на спільному QueryService із шаблонами та доступом через дужки) та RFC 6901 JSON Pointer (з косими рисками, з екрануванням ~0/~1) — обирайте синтаксис, що відповідає вашим інструментам
- Шаблон `*` на будь-якому сегменті шляху розширюється до всіх ключів обʼєкта чи елементів масиву на цьому рівні — `$.store.books[*].title` повертає кожну назву книги без циклу
- Кожен збіг показано і з конкретним шляхом, і зі значенням: результати — не одна відповідь, а список шляхів; розширення шаблоном дає N рядків для індивідуального чи групового копіювання
- Режим JSON Pointer перевіряє синтаксис сегмента: починається з `/`, цілочисельні сегменти індексують масиви, іменовані — обʼєкти, `~1` декодується у `/`, `~0` у `~` — та сама семантика, що в JSON Schema instancePath і JSON Patch
- Кнопка копіювання на кожен збіг пише значення у буфер обміну (рядки сирі, структури як pretty-print JSON), а «Копіювати все» вивантажує повний список `шлях: значення» як простий текст
- Помилки розбору й помилки запиту виходять на поверхню окремо з повним повідомленням рушія JS — одразу зрозуміло, чи винен ваш JSON, чи вираз
- «Завантажити приклад» заповнює маленький документ книгарні з робочим запитом для активного режиму — корисний першообразовий орієнтир щодо синтаксису
- Повністю на стороні клієнта: JSON, вирази та результати не залишають браузер; працює офлайн після кешування сторінки
Як використовувати
- Вставте JSON-документ для запиту у ліве текстове поле.
- Виберіть режим: JSONPath (добре для селекторів із шаблонами) або JSON Pointer (добре, щоб однозначно назвати один вузол).
- Введіть вираз у поле запиту — приклади показано в плейсхолдері для кожного режиму.
- Натисніть «Виконати запит» або Enter у полі. Збіги зʼявляються з конкретними шляхами і значеннями; лічильник показує, скільки знайдено.
- Копіюйте окремі значення значком поряд із кожним збігом або скористайтесь «Копіювати все» для повного списку `шлях: значення`.
- Скористайтесь «Завантажити приклад», щоб заповнити обидва вводи робочим прикладом, якщо новачок із синтаксисом.
Поради та найкращі практики
- Коли не впевнені, чи є у вашому JSON ключ, спершу використайте шаблон, щоб перерахувати, що там насправді, потім звужуйте.
- Шляхи JSON Pointer сортовно як рядки — корисно, коли треба порівнювати набори шляхів між двома структурами.
- Якщо запит повертає один збіг, але ви очікували кілька, перевірте опечатки (`book` vs `books`) — JSONPath тут повертає точну відповідність ключа, а не нечітку.
- Для глибоко вкладених даних JSON Pointer коротший за JSONPath, бо не несе розділювачі `$` та `.` — корисно у чаті чи комітах.
- Поєднуйте з JSON Tree: спершу візуально пересувайтесь, потім копіюйте відомий-хороший pointer у цей інструмент для повторного використання.
Запитання та відповіді
Який синтаксис JSONPath підтримується?
Мінімальна, але корисна підмножина: `$` корінь, `.key` доступ до члена, `['key']` доступ у лапках (для ключів з крапками чи спецсимволами), `[N]` індекс масиву і `*` шаблон у будь-якому сегменті. Фільтри (`[?(@.price < 30)]`), оператор нащадків (`..`) та зрізи (`[1:3]`) тут не підтримуються — для них користуйтеся вкладкою JSONPath у JSON Formatter із багатшим рушієм.
Яка різниця між JSONPath та JSON Pointer?
JSONPath — мова запитів (XPath-для-JSON) — може вибирати кілька вузлів через шаблони, нащадків та предикати. JSON Pointer (RFC 6901) — нотація шляху — називає ТОЧНО ОДИН вузол, який або існує, або ні. Використовуйте JSONPath, коли потрібен НАБІР результатів; JSON Pointer, коли потрібне одне детерміноване місце (наприклад, для JSON Patch або копіювання невдалого instancePath з валідатора схеми).
Навіщо мені обидва режими?
Різні інструменти і стандарти використовують різні нотації. Помилки instancePath JSON Schema — JSON Pointer. fast-json-patch використовує JSON Pointer. JSONPath — те, що очікують більшість CLI-інструментів запитів JSON та багато бібліотек. Мати обидва режими тут означає, що можете копіювати шлях між інструментами без переписування.
Як обробляються ключі зі спеціальними символами?
JSONPath: візьміть у лапки в дужках — `$['weird.key']` звертається до ключа з буквальним іменем `weird.key`. JSON Pointer: екранування за RFC 6901 — `/` у ключі стає `~1`, `~` стає `~0`. Плейсхолдер показує стандартну форму для кожного режиму.
Що, якщо шлях ні з чим не збігається?
Отримуєте результат 0 збігів і примітку «Запит не повернув збігів», а не помилку. Це нормальна конвенція JSONPath / JSON Pointer: відсутні шляхи — це відсутність, не збій. Відрізняйте відсутність від некоректного вводу, дивлячись, чи зʼявився рядок помилки.
Чи можуть шаблони спускатися у вкладені масиви?
Так, на кожному рівні. `$.users[*].roles[*]` шаблон спершу за всіма користувачами, потім за ролями кожного, даючи кожен рядок ролі. Таблиця виводу показує розвʼязаний конкретний шлях кожного збігу (напр. `$.users[0].roles[2]`) — корисно, коли треба точно знати, звідки прийшов збіг.
Чи надсилається щось на сервер?
Ні. JSON.parse працює у вашому браузері, оцінювання JSONPath / JSON Pointer працює в браузері, і збіги рендеряться на сторінці без мережевих викликів. Вкладка «Мережа» в DevTools нічого не показує при натисканні «Виконати запит».
У чому різниця з вкладкою запиту в JSON Formatter?
JSON Formatter — мульти-інструмент: формат, валідація, схема, JSONPath, diff. Цей окремий JSON-запит — мінімальний інтерфейс: один URL, два режими, результати-як-список із копіюванням на збіг, без зайвих площин. Використовуйте Formatter, коли потрібен єдиний вигляд, що поєднує декілька JSON-потоків роботи; цей — коли просто треба видобути значення.