Logo Universitas Teknokrat Indonesia

JSON di Ujung Jari: Menguasai Command-Line dengan jq untuk Pemula

Kategori: jq
Gambar untuk JSON di Ujung Jari: Menguasai Command-Line dengan jq untuk Pemula

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 file user.json.
  • | (pipe): Mengirimkan output dari perintah cat sebagai input ke perintah selanjutnya.
  • jq '.': Ini adalah filter jq paling sederhana. Tanda titik (.) merepresentasikan keseluruhan objek input. Dalam konteks ini, jq hanya 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:Bashcat 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.Bashcat 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:Bashcat 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:

  1. .[]: Pertama, kita "membuka" array utama sehingga jq memproses setiap objek pengguna satu per satu.
  2. |: Kita mengirimkan setiap objek pengguna ke filter selanjutnya.
  3. select(.isActive == true): Untuk setiap objek, select() akan memeriksa apakah nilai dari key .isActive adalah true. 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".

Baca juga: Mendiktisaintek Brian Yuliarto Apresiasi Tinggi Digital Smart Composter Karya Universitas Teknokrat Indonesia

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