JSONPath adalah bahasa query untuk mengambil nilai dari dokumen JSON berdasarkan path — peran yang sama dengan XPath untuk XML. Bagi yang pernah bekerja dengan sistem instansi pemerintah atau perbankan di Indonesia yang integrasinya masih berbasis XML/SOAP, sintaksis ini akan terasa familier.
Sintaksis dasar
Sebuah ekspresi selalu dimulai dengan $, root dari dokumen. Dari situ, field diakses dengan titik ($.user.name) atau kurung siku ($['user']['name']), dan elemen array dengan indeks ($.items[0]).
Memilih beberapa nilai sekaligus
Karakter wildcard * memilih semua elemen pada satu level, sementara .. adalah penelusuran rekursif — menemukan field pada kedalaman berapa pun tanpa perlu tahu path pastinya. Filter seperti [?(@.price < 10)] memilih elemen array berdasarkan kondisi yang mirip ekspresi pemrograman.
Kegunaannya
- Mengambil satu field dengan cepat dari respons API besar saat debugging, tanpa menulis skrip.
- Memfilter log atau event dalam format JSON berdasarkan kondisi tertentu secara langsung.
- Membaca nilai dari berkas konfigurasi tanpa menulis parser sendiri.
JSONPath vs XPath: kesalahan indeks yang klasik
Mereka yang datang dari XPath, di mana pengindeksan node dimulai dari 1 (book[1] adalah elemen pertama), sering keliru saat berpindah ke JSONPath, yang pengindeksannya dimulai dari 0 — book[1] sudah menjadi elemen kedua. Perbedaan ini saja menyumbang cukup banyak bug ketika integrasi XML/XPath lama dimigrasikan ke API JSON.
Kunci dengan titik atau spasi
Jika nama field itu sendiri mengandung titik, tanda hubung, atau spasi (misalnya kunci literal "user.name", bukan field bersarang), notasi titik $.user.name menjadi ambigu — parser akan membacanya sebagai field bersarang user dan name. Dalam kasus ini, kunci harus ditulis dalam kurung siku dengan tanda kutip: $['user.name'].