Di dunia modern pengembangan perangkat lunak dan administrasi sistem, JSON (JavaScript Object Notation) ada di mana-mana. Ia adalah bahasa universal untuk pertukaran data. Saat Anda mengambil data dari sebuah API, membaca file konfigurasi, atau menganalisis log, kemungkinan besar Anda akan berhadapan dengan tumpukan teks JSON yang terkadang sulit dibaca.
Bagi banyak orang, langkah pertama saat melihat data JSON di terminal adalah menyalinnya ke editor teks atau formatter online untuk membuatnya lebih rapi. Namun, bagaimana jika Anda perlu lebih dari sekadar melihatnya? Bagaimana jika Anda perlu menemukan nilai tertentu, mengekstrak daftar email, atau mengubah strukturnya secara langsung dari command-line? Di sinilah jq hadir sebagai pahlawan.
jq adalah sebuah processor JSON untuk command-line yang ringan dan super cepat. Anggap saja jq adalah "sed" atau "awk" untuk data JSON. Ia memungkinkan Anda untuk memotong, memfilter, memetakan, dan mentransformasi data JSON yang rumit dengan perintah-perintah yang elegan dan kuat. Artikel ini adalah panduan Anda untuk memulai perjalanan menguasai jq, mengubah cara Anda berinteraksi dengan JSON selamanya.
Baca juga: Membongkar Rahasia GDScript: Mengapa Sintaksis Sederhana Mampu Menciptakan Dunia Game Kompleks?
Apa Itu jq dan Mengapa Anda Membutuhkannya?
Bayangkan Anda baru saja membuat panggilan curl ke sebuah API dan mendapatkan respons seperti ini di terminal Anda:
JSON
{"id":123,"user":"andika","isActive":true,"roles":["admin","editor"],"profile":{"email":"andika@example.com","lastLogin":"2025-08-27"}}
Data ini, meskipun kecil, sudah cukup merepotkan untuk dibaca dalam satu baris. Sekarang bayangkan jika data ini berisi ratusan field atau merupakan sebuah array dengan ribuan objek. Mencari informasi secara manual adalah mimpi buruk.
Dengan jq, Anda bisa melakukan hal-hal berikut secara instan:
- Pretty Print: Membuat JSON lebih mudah dibaca dengan indentasi dan warna.
- Mengekstrak Nilai: Mengambil nilai dari key tertentu (misalnya, hanya alamat emailnya).
- Memfilter Array: Menemukan objek dalam array yang cocok dengan kriteria tertentu.
- Mengubah Struktur: Membuat objek JSON baru dari data yang ada.
jq adalah alat yang membebaskan Anda dari tugas-tugas manual yang membosankan dan rawan kesalahan, serta memberdayakan Anda untuk mengintegrasikan pengolahan data JSON ke dalam skrip shell Anda.
Instalasi dan Penggunaan Paling Dasar
Sebelum memulai, Anda perlu menginstal jq. Prosesnya sangat mudah di sebagian besar sistem operasi.
- macOS (via Homebrew):
brew install jq - Debian/Ubuntu:
sudo apt-get install jq - CentOS/RHEL:
sudo yum install jq - Windows (via Chocolatey):
choco install jq
Setelah terinstal, mari kita coba perintah jq yang paling dasar dan paling sering digunakan: pretty-printing. Simpan data JSON di atas dalam sebuah file bernama user.json. Sekarang, jalankan perintah ini di terminal Anda:
Bash
cat user.json | jq '.'
Breakdown Perintah:
cat user.json: Membaca dan menampilkan konten fileuser.json.|(pipe): Mengirimkan output dari perintahcatsebagai input ke perintah selanjutnya.jq '.': Ini adalah filterjqpaling sederhana. Tanda titik (.) merepresentasikan keseluruhan objek input. Dalam konteks ini,jqhanya mengambil input, memformatnya dengan rapi, dan menampilkannya.
Hasilnya akan jauh lebih enak dilihat:
JSON
{
"id": 123,
"user": "andika",
"isActive": true,
"roles": [
"admin",
"editor"
],
"profile": {
"email": "andika@example.com",
"lastLogin": "2025-08-27"
}
}
Mengekstrak Data: Mengambil Apa yang Anda Butuhkan
Sekarang bagian yang paling menarik. Mari kita mulai membedah data JSON kita untuk mendapatkan informasi spesifik.
Mengambil Nilai dari Key
Untuk mengakses nilai dari sebuah key, gunakan filter .key_name.
- Mengambil nama pengguna:Bash
cat user.json | jq '.user'Output:"andika"(lengkap dengan tanda kutip karena ini adalah string JSON). - Mengambil email dari objek bersarang (nested object): Anda bisa merangkai filter untuk menavigasi struktur objek.Bash
cat user.json | jq '.profile.email'Output:"andika@example.com"
Jika Anda ingin mendapatkan hasilnya sebagai teks mentah tanpa tanda kutip, gunakan flag -r (raw output).
Bash
cat user.json | jq -r '.profile.email'
Output: andika@example.com
Ini sangat berguna saat Anda ingin menyimpan hasil jq ke dalam variabel shell.
Mengakses Elemen Array
Untuk mengakses elemen dalam sebuah array, gunakan sintaks .key_name[index]. Ingat, index dimulai dari 0.
- Mengambil peran (role) pertama:Bash
cat user.json | jq '.roles[0]'Output:"admin" - Mengambil semua elemen dalam array (iterate): Gunakan
[]tanpa index untuk "membuka" array dan menampilkan setiap elemen secara berurutan.Bashcat user.json | jq '.roles[]'Output:"admin" "editor"
Membangun Objek Baru dan Memfilter
Kekuatan sejati jq terlihat saat Anda mulai memanipulasi dan membuat struktur data baru.
Membuat Objek JSON Baru
Anda dapat membuat objek baru menggunakan sintaks {} dan mendefinisikan key-value pair baru dari data yang ada.
Misalnya, mari kita buat objek baru yang hanya berisi nama pengguna dan emailnya.
Bash
cat user.json | jq '{ username: .user, user_email: .profile.email }'
Outputnya adalah objek JSON yang benar-benar baru:
JSON
{
"username": "andika",
"user_email": "andika@example.com"
}
Perhatikan bagaimana kita memberikan nama key baru (username) dan mengisinya dengan nilai dari key lama (.user).
Memfilter Array dengan select()
Sekarang, mari kita gunakan contoh yang lebih kompleks dengan data array. Misalkan kita punya file users.json berisi daftar pengguna:
JSON
[
{"user": "andika", "isActive": true, "followers": 150},
{"user": "budi", "isActive": false, "followers": 35},
{"user": "citra", "isActive": true, "followers": 500}
]
Bagaimana jika kita hanya ingin melihat pengguna yang aktif ("isActive": true)? Kita bisa menggunakan fungsi select().
Bash
cat users.json | jq '.[] | select(.isActive == true)'
Breakdown Perintah:
.[]: Pertama, kita "membuka" array utama sehinggajqmemproses setiap objek pengguna satu per satu.|: Kita mengirimkan setiap objek pengguna ke filter selanjutnya.select(.isActive == true): Untuk setiap objek,select()akan memeriksa apakah nilai dari key.isActiveadalahtrue. Jika ya, objek tersebut akan diteruskan ke output.
Hasilnya adalah pengguna yang aktif saja:
JSON
{
"user": "andika",
"isActive": true,
"followers": 150
}
{
"user": "citra",
"isActive": true,
"followers": 500
}
Anda bahkan bisa menggabungkan beberapa kondisi. Misalnya, mencari pengguna aktif dengan lebih dari 200 pengikut:
Bash
cat users.json | jq '.[] | select(.isActive == true and .followers > 200)'
Outputnya hanya akan menampilkan data pengguna "eka".
Kesimpulan: Alat Wajib di Gudang Senjata Anda
Kita baru saja menyentuh permukaan dari apa yang bisa dilakukan oleh jq. Dari filter sederhana hingga transformasi data yang rumit, jq adalah alat yang sangat ekspresif dan kuat. Ia mengubah data JSON dari sekadar teks statis menjadi sumber informasi yang dinamis dan dapat ditanyai, langsung dari kenyamanan terminal Anda.
Dengan sedikit latihan, Anda akan menemukan diri Anda tidak lagi takut berhadapan dengan output JSON yang berantakan. Sebaliknya, Anda akan melihatnya sebagai sebuah tantangan untuk menyusun perintah jq yang paling efisien dan elegan. Jadi, mulailah bereksperimen, baca dokumentasinya, dan bersiaplah untuk menaklukkan dunia JSON dari command-line.
Penulis: Eka sri indah lestary