Pernahkah Anda menggali respons JSON yang sangat besar, mencoba menemukan satu bagian data yang Anda butuhkan? Jika ya, maka Anda tahu bahwa itu bisa seperti mencari jarum di tumpukan jerami. Perkenalkan JSONPath - alat kecil yang rapi yang dapat membuat hidup Anda jauh lebih mudah saat berurusan dengan data JSON di API.
Apa itu JSONPath?
JSONPath adalah bahasa kueri untuk JSON, mirip dengan XPath untuk XML. Ini memungkinkan Anda untuk menavigasi dan mengekstrak bagian-bagian tertentu dari data JSON Anda menggunakan sintaks yang sederhana dan intuitif. Anggap saja ini sebagai cara untuk menjalankan kueri pada data JSON Anda dan mendapatkan apa yang Anda butuhkan tanpa mengarungi seluruh respons.
Mengapa Menggunakan JSONPath?
Bayangkan Anda memiliki respons JSON yang sangat besar dari sebuah API; yang Anda butuhkan hanyalah nilai dari bidang tertentu yang terletak jauh di dalam. Tanpa JSONPath, Anda biasanya harus menulis banyak kode untuk mengurai JSON, yang bisa jadi membosankan dan rawan kesalahan. JSONPath menyederhanakan ini dengan membiarkan Anda menentukan dengan tepat apa yang ingin Anda ekstrak, membuat kode Anda lebih bersih dan lebih mudah dipelihara.
Bagaimana Cara Kerja JSONPath?
JSONPath menggunakan sintaks yang mirip dengan notasi objek JavaScript, dengan beberapa fitur tambahan untuk kueri yang lebih kompleks. Berikut adalah ringkasan singkat dari sintaks dasar:
$
: Mewakili objek atau array root..
atau[]
: Operator anak; digunakan untuk mengakses properti objek atau elemen array.*
: Wildcard; cocok dengan semua elemen atau bidang...
: Recursive descent; mencari node yang cocok di level mana pun.?()
: Menerapkan filter (ekspresi harus bernilai true).()
: Ekspresi skrip, menggunakan mesin skrip yang mendasarinya.
Mari selami beberapa contoh untuk melihat JSONPath beraksi.
Contoh JSONPath Dasar
Pertimbangkan data JSON berikut dari API database film:
{
"movies": {
"action": [
{ "title": "Mad Max: Fury Road", "director": "George Miller", "year": 2015, "rating": 8.1 },
{ "title": "John Wick", "director": "Chad Stahelski", "year": 2014, "rating": 7.4 }
],
"drama": [
{ "title": "The Shawshank Redemption", "director": "Frank Darabont", "year": 1994, "rating": 9.3 },
{ "title": "Forrest Gump", "director": "Robert Zemeckis", "year": 1994, "rating": 8.8 }
],
"comedy": [
{ "title": "The Grand Budapest Hotel", "director": "Wes Anderson", "year": 2014, "rating": 8.1 }
]
}
}
Mengekstrak semua film aksi:
$.movies.action[*]
Ini akan memberi Anda array dari semua objek film aksi.
Mengekstrak judul semua film drama:
$.movies.drama[*].title
Ini akan mengembalikan array dari judul semua film drama: ["The Shawshank Redemption", "Forrest Gump"]
.
Mengekstrak rating dari "Mad Max: Fury Road":
$.movies.action[?(@.title == "Mad Max: Fury Road")].rating
Ini akan mengembalikan rating dari "Mad Max: Fury Road": 8.1
.
Menemukan semua film yang dirilis pada tahun 2014:
$.movies..[?(@.year == 2014)]
Ini akan mengembalikan semua film yang dirilis pada tahun 2014, yang dalam kasus ini adalah: ["John Wick", "The Grand Budapest Hotel"]
.
JSONPath di API
Menggunakan JSONPath di API sangat berguna ketika Anda ingin mengekstrak informasi spesifik dari respons JSON. Banyak bahasa pemrograman dan alat memiliki pustaka yang mendukung JSONPath, sehingga mudah untuk diintegrasikan ke dalam proyek Anda.
Misalnya, di Javascript, Anda dapat menggunakan pustaka jsonpath
:
const jsonpath = require('jsonpath');
// Contoh data JSON
const data = {
movies: {
action: [
{ title: "Mad Max: Fury Road", director: "George Miller", year: 2015, rating: 8.1 },
{ title: "John Wick", director: "Chad Stahelski", year: 2014, rating: 7.4 }
],
drama: [
{ title: "The Shawshank Redemption", director: "Frank Darabont", year: 1994, rating: 9.3 },
{ title: "Forrest Gump", director: "Robert Zemeckis", year: 1994, rating: 8.8 }
],
comedy: [
{ title: "The Grand Budapest Hotel", director: "Wes Anderson", year: 2014, rating: 8.1 }
]
}
};
// Mengekstrak judul semua film drama
const titles = jsonpath.query(data, '$.movies.drama[*].title');
console.log(titles); // Output: ["The Shawshank Redemption", "Forrest Gump"]
Demikian pula, di Python, Anda dapat menggunakan pustaka jsonpath-ng
:
from jsonpath_ng import jsonpath, parse
# Contoh data JSON
data = {
"movies": {
"action": [
{"title": "Mad Max: Fury Road", "director": "George Miller", "year": 2015, "rating": 8.1},
{"title": "John Wick", "director": "Chad Stahelski", "year": 2014, "rating": 7.4}
],
"drama": [
{"title": "The Shawshank Redemption", "director": "Frank Darabont", "year": 1994, "rating": 9.3},
{"title": "Forrest Gump", "director": "Robert Zemeckis", "year": 1994, "rating": 8.8}
],
"comedy": [
{"title": "The Grand Budapest Hotel", "director": "Wes Anderson", "year": 2014, "rating": 8.1}
]
}
}
# Mengekstrak judul semua film drama
jsonpath_expr = parse('$.movies.drama[*].title')
titles = [match.value for match in jsonpath_expr.find(data)]
print(titles) # Output: ["The Shawshank Redemption", "Forrest Gump"]
Menggunakan JSONPath di Apidog

Apidog adalah alat serbaguna yang dirancang untuk menyederhanakan proses bekerja dengan API, dan mendukung JSONPath secara langsung.

Berikut adalah bagaimana Apidog dapat membantu Anda memanfaatkan kekuatan JSONPath secara efektif:
Pertama. Anda perlu mengirim permintaan ke API Anda dan melihat respons secara langsung dengan Apidog. Kemudian Anda dapat menggunakan antarmuka yang disediakan untuk menerapkan kueri JSONPath untuk mengekstrak judul semua film aksi dari respons.

Dari tangkapan layar di atas, Anda akan melihat bahwa (1) kami mengirim permintaan GET
ke server kami - Saya membuat server express sederhana menggunakan data JSON yang kami dapatkan di atas sebagai respons. Kemudian saya beralih ke tab Post Processors (2), dan menambahkan proses baru - Extract Variable
(3).
Setelah mengklik Extract Variable
, Anda akan diperlihatkan halaman di bawah ini;

Anda dapat mengatur nama variabel (1) jika Anda suka. Variabel berguna jika Anda ingin memantau atau membangun API yang berbeda dan Anda memerlukan satu tempat untuk mengelola konfigurasi umum. Variabel di sini seperti file .env
.
Langkah lainnya adalah mengetik JSONPath yang ingin Anda filter (2). Dalam kasus kami di sini, kami ingin mendapatkan judul film dalam array action dari JSON kami. Setelah Anda mengetik jalur saat ini, klik tombol panah (3) untuk membuka halaman respons kueri seperti yang ditunjukkan di bawah ini.

Seperti yang dapat Anda lihat dari respons di atas, Apidog memfilter judul film dalam array action dan menampilkannya kepada kami.
Jika Anda ingin mencoba ini, pastikan untuk mengunduh dan menginstal Apidog dan mengirim permintaan pertama Anda dengannya.
Kesimpulan
JSONPath adalah alat yang sangat berharga untuk menavigasi dan mengekstrak data dari respons JSON di API. Ini menyederhanakan proses bekerja dengan struktur JSON yang kompleks, membuat alur kerja pengembangan Anda lebih efisien. Dengan mengintegrasikan JSONPath dengan alat seperti Apidog, Anda dapat dengan mudah memfilter dan mengambil data yang tepat yang Anda butuhkan, meningkatkan pengujian dan proses debugging API Anda. Baik Anda mengekstrak judul film, memfilter catatan tertentu, atau memvalidasi respons, JSONPath menawarkan cara yang jelas dan ringkas untuk menangani data JSON. Cobalah di proyek Anda berikutnya dan rasakan kesederhanaan yang disederhanakan yang dibawanya.