Bekerja dengan data JSON adalah tugas harian bagi sebagian besar pengembang. Baik Anda mem-parsing respons API, memproses file konfigurasi, atau mentransformasi data, Anda sering perlu mengekstrak nilai tertentu dari struktur JSON yang bersarang dalam-dalam. Meskipun Anda bisa menulis kode untuk melintasi pohon objek, JSONPath menyediakan bahasa kueri yang ringkas dan kuat yang melakukan hal yang sama dalam satu ekspresi.
Panduan ini mencakup semua yang perlu Anda ketahui tentang JSONPath โ dari sintaks dasar hingga filter lanjutan โ dengan contoh praktis yang dapat Anda gunakan segera.
Apa Itu JSONPath?
JSONPath adalah bahasa kueri untuk JSON, mirip dengan bagaimana XPath bekerja untuk XML. Ini memungkinkan Anda memilih elemen tertentu dari dokumen JSON menggunakan ekspresi jalur. Awalnya diusulkan oleh Stefan Goessner pada tahun 2007, JSONPath telah menjadi alat standar dalam perangkat pengembang, dengan implementasi tersedia di hampir setiap bahasa pemrograman.
JSON Path Finder DevBox menyediakan lingkungan interaktif di mana Anda dapat menempelkan data JSON Anda, menulis kueri JSONPath, dan melihat hasil secara real time. Ini adalah cara tercepat untuk belajar dan bereksperimen dengan JSONPath.
Sintaks Dasar
Ekspresi JSONPath menggunakan tanda dolar ($) untuk mewakili root dokumen JSON. Dari sana, Anda menavigasi menggunakan notasi titik atau notasi kurung:
// Notasi titik
$.store.book[0].title
// Notasi kurung
$['store']['book'][0]['title']
// Keduanya setara
Notasi titik lebih mudah dibaca untuk jalur sederhana, sementara notasi kurung diperlukan ketika kunci mengandung karakter khusus atau spasi.
Memilih Elemen Array
Array adalah bagian fundamental dari JSON. JSONPath menyediakan beberapa cara untuk memilih elemen array:
// Elemen pertama
$.store.book[0]
// Elemen terakhir
$.store.book[-1]
// Slice (elemen 1 sampai 3, eksklusif)
$.store.book[1:3]
// Semua elemen (wildcard)
$.store.book[*]
// Filter berdasarkan kondisi
$.store.book[?(@.price < 10)]
Sintaks slice [start:end] mengikuti konvensi Python โ indeks awal inklusif, indeks akhir eksklusif, dan keduanya bisa negatif untuk menghitung dari akhir.
Recursive Descent
Salah satu fitur paling kuat JSONPath adalah operator recursive descent (..). Ini mencari properti pada level apa pun dari pohon JSON, terlepas dari kedalaman bersarang:
// Temukan semua field "price" di mana saja dalam dokumen
$..price
// Temukan semua field "author" dalam buku
$.store..author
// Temukan harga buku kedua, terlepas dari struktur
$..book[1].price
Ini sangat berguna ketika Anda tidak tahu struktur pasti dari JSON yang Anda kerjakan, atau ketika struktur bervariasi antara record.
Ekspresi Filter
Ekspresi filter memungkinkan Anda memilih elemen array berdasarkan kondisi. Sintaksnya adalah [?(expression)], di mana elemen saat ini direferensikan sebagai @:
// Buku lebih murah dari 10
$.store.book[?(@.price < 10)]
// Buku dengan kategori "fiction"
$.store.book[?(@.category == "fiction")]
// Buku dengan ISBN (cek keberadaan)
$.store.book[?(@.isbn)]
// Filter bersarang: buku di mana penulis dimulai dengan "J"
$.store.book[?(@.author =~ /^J/)]
Operator perbandingan yang didukung termasuk ==, !=, <, >, <=, >=, dan =~ (pencocokan ekspresi reguler). Anda juga dapat menggabungkan kondisi dengan && (dan) dan || (atau).
Contoh Praktis
Contoh 1: Mengekstrak Email Pengguna dari Respons API
// Diberikan: {"users": [{"name": "Alice", "email": "alice@example.com"}, ...]}
// Dapatkan semua email
$.users[*].email
Contoh 2: Menemukan Produk yang Tersedia
// Diberikan: {"products": [{"name": "Widget", "stock": 5}, {"name": "Gadget", "stock": 0}, ...]}
// Produk dengan stok > 0
$.products[?(@.stock > 0)].name
Contoh 3: Mengekstrak Pesan Error
// Diberikan: {"response": {"errors": [{"code": 404, "message": "Not found"}, ...]}}
// Semua pesan error
$.response.errors[*].message
Kesimpulan
JSONPath adalah keterampilan penting untuk setiap pengembang yang bekerja dengan data JSON. Ini mentransformasi kode traversal multi-baris yang membosankan menjadi ekspresi ringkas dan dapat dibaca. Baik Anda mendebug respons API, menulis skrip transformasi data, atau membangun pipeline data, JSONPath menghemat waktu dan mengurangi kesalahan. Coba JSON Path Finder DevBox untuk mempraktikkan contoh-contoh ini dengan data Anda sendiri โ umpan balik interaktif membuat pembelajaran cepat dan intuitif.