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, вирази та результати не залишають браузер; працює офлайн після кешування сторінки

Як використовувати

  1. Вставте JSON-документ для запиту у ліве текстове поле.
  2. Виберіть режим: JSONPath (добре для селекторів із шаблонами) або JSON Pointer (добре, щоб однозначно назвати один вузол).
  3. Введіть вираз у поле запиту — приклади показано в плейсхолдері для кожного режиму.
  4. Натисніть «Виконати запит» або Enter у полі. Збіги зʼявляються з конкретними шляхами і значеннями; лічильник показує, скільки знайдено.
  5. Копіюйте окремі значення значком поряд із кожним збігом або скористайтесь «Копіювати все» для повного списку `шлях: значення`.
  6. Скористайтесь «Завантажити приклад», щоб заповнити обидва вводи робочим прикладом, якщо новачок із синтаксисом.

Поради та найкращі практики

  • Коли не впевнені, чи є у вашому 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-потоків роботи; цей — коли просто треба видобути значення.