Format JSON di Bash: Panduan jq dan python3

ยทSRE & Shell Scripting SpecialistยทDitinjau olehErik LindqvistยทDiterbitkan

Gunakan JSON Formatter & Beautifier gratis langsung di browser Anda โ€” tidak perlu instalasi.

Coba JSON Formatter & Beautifier Online โ†’

Ketika skrip deploy mulai memproses respons API atau memvalidasi file konfigurasi di CI, mengetahui cara memformat JSON di bash dengan cepat menjadi sangat penting. Dua alat yang mencakup 99% kasus dunia nyata adalah jq dan python3 -m json.tool โ€” keduanya dapat menjalankan pipeline format json bash secara andal, memvalidasi dengan kode keluar, dan terintegrasi dengan bersih ke dalam alur kerja CI/CD. Untuk inspeksi satu kali tanpa terminal, browser-based Pemformat JSON langsung menanganinya. Panduan ini mencakup instalasi jq, pemformatan pipe dan file, fungsi validasi, integrasi CI/CD di GitHub Actions, pre-commit hooks, pola heredoc, dan kapan harus menggunakan fallback Python stdlib.

POIN UTAMA
  • โ€ข jq . memformat DAN memvalidasi secara bersamaan โ€” keluar dengan kode 1 pada JSON tidak valid
  • โ€ข Gunakan jq -e di pipeline CI: exit non-zero pada output kosong/false/null
  • โ€ข jq . file.json > /dev/null && echo "valid" โ€” validasi tanpa mengubah output
  • โ€ข python3 -m json.tool berfungsi di sistem mana pun tanpa instalasi tambahan
  • โ€ข Jangan pernah melakukan jq . f.json > f.json โ€” shell memotong file sumber sebelum jq membacanya

Apa Itu Pemformatan JSON di Bash?

Pemformatan JSON di bash berarti mengubah JSON yang kompak dan diminifikasi menjadi output yang diindentasi dan mudah dibaca manusia. Data yang mendasarinya tidak berubah โ€” hanya spasi dan jeda baris yang berbeda. Dalam konteks scripting ini penting karena dua alasan: keterbacaan saat debugging, dan validasi saat formatter memeriksa ulang sintaks sebagai efek samping. Alat seperti jq mengurai JSON sepenuhnya sebelum memformatnya ulang, yang berarti menjalankan format yang berhasil juga merupakan pemeriksaan validitas implisit. Perilaku ganda itu โ€” format dan validasi dalam satu langkah โ€” inilah yang membuat jq begitu berguna dalam pipeline otomatis.

Before ยท json
After ยท json
{"service":"payments-api","version":"2.4.1","database":{"host":"db-prod-01.internal","port":5432,"pool_size":20},"cache":{"enabled":true,"ttl":300}}
{
  "service": "payments-api",
  "version": "2.4.1",
  "database": {
    "host": "db-prod-01.internal",
    "port": 5432,
    "pool_size": 20
  },
  "cache": {
    "enabled": true,
    "ttl": 300
  }
}

jq โ€” Memformat JSON di Bash

jq adalah standar de-facto untuk pemrosesan JSON dalam skrip shell (jq 1.6+, bash 4+). Ini adalah prosesor JSON command-line yang dibuat khusus yang dapat memformat, memfilter, mengubah, dan memvalidasi JSON. Filter identitas . meneruskan input tanpa perubahan, tetapi diformat. Ketika jq tidak dapat mengurai input, ia keluar dengan kode 1 โ€” inilah yang membuatnya ideal untuk scripting: pemformatan dan validasi adalah satu operasi.

Instal jq

Bash
# macOS
brew install jq

# Debian / Ubuntu
apt-get install -y jq

# Fedora / RHEL / CentOS
dnf install jq

# Alpine (image Docker)
apk add --no-cache jq

# Verifikasi
jq --version  # jq-1.7.1

Format dari stdin dan dari file

Bash
# Teruskan JSON inline melalui jq
echo '{"host":"db-prod-01.internal","port":5432}' | jq .

# Format file secara langsung (cetak ke stdout)
jq . config/feature-flags.json

# Format dengan indentasi 4 spasi
jq --indent 4 . config/feature-flags.json

# Format menggunakan tab alih-alih spasi
jq --tab . config/feature-flags.json

Tulis output yang diformat ke file

Bash
# Simpan output yang diformat (JANGAN redirect kembali ke file yang sama)
jq . compact.json > formatted.json

# Kompak (minifikasi) โ€” kebalikan dari pemformatan
jq -c . formatted.json
Catatan:jq keluar dengan kode 1 pada JSON tidak valid, kode 0 saat sukses, dan kode 5 pada kesalahan penggunaan. Gunakan ini dalam pernyataan if dan penjaga || exit 1 di seluruh skrip Anda.

Urutkan kunci dan hapus warna

Bash
# Urutkan semua kunci secara alfabetis (berguna untuk diff deterministik)
jq --sort-keys . config/app-config.json

# Nonaktifkan output warna saat menulis ke file log
jq --monochrome-output . response.json >> deploy.log

Referensi Opsi jq

Flag jq yang paling sering digunakan untuk alur kerja pemformatan dan validasi:

Opsi
Tipe
Default
Deskripsi
.
filter
โ€”
Filter identitas โ€” memformat dan mencetak seluruh input tanpa perubahan.
--indent N
int
2
Mengatur indentasi ke N spasi (0โ€“7). Gunakan 2 atau 4 untuk format standar.
--tab
flag
mati
Indentasi dengan karakter tab alih-alih spasi.
-c / --compact-output
flag
mati
Menciutkan output ke satu baris (minifikasi). Membatalkan pretty-print.
-r / --raw-output
flag
mati
Mencetak string tanpa tanda kutip JSON. Berguna untuk mengekstrak nilai teks biasa.
-e / --exit-status
flag
mati
Keluar dengan kode 1 jika output adalah false atau null. Ideal untuk asersi CI.
-M / --monochrome-output
flag
mati
Menonaktifkan output berwarna โ€” berguna saat meneruskan ke file atau sink non-terminal.
-S / --sort-keys
flag
mati
Mengurutkan semua kunci objek secara alfabetis di setiap level nesting.
-n / --null-input
flag
mati
Tidak membaca input; gunakan dengan --arg / --argjson untuk membangun JSON dari awal.
--arg name val
string
โ€”
Mengikat string shell sebagai variabel jq bernama ($name) yang dapat diakses dalam filter.

Validasi JSON dalam Skrip Bash

Validasi dan pemformatan adalah operasi yang sama di jq โ€” ia mengurai sebelum mencetak. Alihkan stdout ke /dev/null ketika Anda hanya menginginkan kode keluar tanpa output yang diformat. Pola di bawah ini dapat digunakan kembali di seluruh skrip deploy, pre-commit hooks, dan pipeline CI. Dalam respons insiden, hal pertama yang saya lakukan dengan payload API yang tidak familiar adalah meneruskannya melalui jq โ€” ini mengubah tembok JSON yang diminifikasi menjadi sesuatu yang benar-benar bisa saya baca dan debug.

Fungsi validasi yang dapat digunakan kembali

Bash
validate_json() {
  local file="$1"
  if jq . "$file" > /dev/null 2>&1; then
    echo "โœ“ JSON valid: $file"
    return 0
  else
    echo "โœ— JSON tidak valid: $file" >&2
    return 1
  fi
}

Batalkan deploy pada konfigurasi tidak valid

Bash
CONFIG="infra/k8s/app-config.json"
validate_json "$CONFIG" || { echo "Membatalkan deploy: konfigurasi tidak valid" >&2; exit 1; }

Validasi semua file JSON dalam direktori

Bash
find ./config -name "*.json" | while read -r f; do
  jq . "$f" > /dev/null 2>&1 || echo "TIDAK VALID: $f"
done
Catatan:Flag -e / --exit-status lebih jauh: ia juga keluar dengan kode 1 ketika output adalah false atau null. Gunakan untuk menyatakan bahwa field tertentu bernilai benar: jq -e '.feature_flags.new_checkout' config.json.

Format JSON dari File dan Respons API

Dua sumber umum JSON dalam skrip shell adalah file di disk dan respons HTTP API melalui curl. Masing-masing memiliki pola penanganan yang sedikit berbeda. Untuk file, kekhawatiran utamanya adalah pengeditan aman di tempat. Untuk respons API, detail utamanya adalah menekan bilah kemajuan curl agar tidak merusak input jq.

Pemformatan aman di tempat untuk sebuah file

Bash
# Format dan timpa dengan aman menggunakan file temp
tmp=$(mktemp)
jq --indent 2 . config/feature-flags.json > "$tmp" && mv "$tmp" config/feature-flags.json
echo "Memformat config/feature-flags.json"

Format respons curl API

Bash
# Format status deployment dari API
DEPLOY_ID="dep_8f3a2b9c"
curl -s \
  -H "Authorization: Bearer $DEPLOY_API_TOKEN" \
  "https://api.deployments.internal/v1/deploys/$DEPLOY_ID" \
  | jq --indent 2 .

Format dan filter secara bersamaan

Bash
# Dapatkan yang diformat + filter ke error saja dari endpoint monitoring
curl -s "https://monitoring.internal/api/events?level=error&limit=10" \
  | jq '[.events[] | {id, message, timestamp, service}]' \
  || { echo "Gagal mengambil atau mengurai events" >&2; exit 1; }

Pola || { ... } sangat penting di sini. Tanpanya, curl yang gagal atau respons API yang cacat diteruskan secara diam-diam dan langkah berikutnya dalam skrip Anda beroperasi pada data kosong atau sebagian. Jika Anda perlu memeriksa respons bersarang yang kompleks tanpa terlebih dahulu menulis ekspresi filter, browser-based Pemformat JSON memungkinkan Anda menempel respons mentah dan menavigasi pohon secara interaktif.

Format JSON dalam Pipeline CI/CD

CI adalah tempat gerbang validasi JSON paling penting โ€” konfigurasi yang cacat yang mencapai produksi jauh lebih menyakitkan untuk di-rollback daripada kegagalan pipeline. Sebagian besar pesaing mendokumentasikan jq untuk penggunaan terminal satu kali; pola di bawah ini adalah yang saya gunakan dalam alur kerja SRE produksi untuk menangkap kesalahan konfigurasi sebelum pernah mencapai slot deployment.

GitHub Actions โ€” validasi semua konfigurasi JSON

YAML
- name: Validasi konfigurasi JSON
  run: |
    echo "Memvalidasi file konfigurasi JSON..."
    find . -name "*.json" -not -path "*/node_modules/*" | while read -r f; do
      if ! jq . "$f" > /dev/null 2>&1; then
        echo "::error file=$f::Sintaks JSON tidak valid"
        exit 1
      fi
    done
    echo "Semua file JSON valid"

Pre-commit hook โ€” validasi file JSON yang di-stage

Bash
#!/usr/bin/env bash
set -euo pipefail
STAGED=$(git diff --cached --name-only --diff-filter=ACM | grep '\.json$' || true)
[ -z "$STAGED" ] && exit 0
for f in $STAGED; do
  jq . "$f" > /dev/null 2>&1 || { echo "JSON tidak valid: $f"; exit 1; }
done
echo "Validasi JSON berhasil"
Catatan:Simpan pre-commit hook ke scripts/validate-json.sh, jadikan dapat dieksekusi dengan chmod +x scripts/validate-json.sh, lalu buat symlink: ln -s ../../scripts/validate-json.sh .git/hooks/pre-commit.

Format Variabel JSON dan Heredoc di Bash

Skrip shell sering membangun payload JSON secara dinamis โ€” dari variabel lingkungan, metadata git, atau nilai yang dihitung. Pola yang paling aman adalah jq -n --arg / --argjson daripada interpolasi string, yang rusak saat sebuah nilai berisi tanda kutip atau baris baru. Selalu beri tanda kutip ganda pada variabel saat meneruskan ke jq untuk mencegah pemisahan kata pada spasi dalam JSON.

Format variabel respons API yang tersimpan

Bash
# Selalu beri tanda kutip "$API_RESPONSE" โ€” spasi dalam JSON akan merusak ekspansi yang tidak dikutip
echo "$API_RESPONSE" | jq --indent 2 .

Bangun dan format payload dengan jq -n

Bash
payload=$(jq -n \
  --arg env "production" \
  --arg version "$(git describe --tags)" \
  --argjson replicas 3 \
  '{environment: $env, version: $version, replicas: $replicas}')

# Periksa payload yang dibangun
echo "$payload" | jq .

# Kirim ke API
curl -s -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $DEPLOY_API_TOKEN" \
  -d "$payload" \
  "https://api.deployments.internal/v1/deploys"
Catatan:--arg selalu mengikat nilai string. --argjson mengurai nilai sebagai JSON terlebih dahulu, sehingga Anda dapat meneruskan angka, boolean, array, dan objek tanpa mengutipnya di dalam ekspresi filter.

Format JSON di Bash Tanpa Menginstal jq

Ketika jq tidak tersedia โ€” image Docker minimal, CI runner yang terkunci, atau sistem di mana Anda tidak dapat menginstal paket โ€” modul json.tool bawaan Python menyediakan kemampuan inti yang sama. Ini adalah bagian dari pustaka standar Python; jika Python 3 terinstal, ini berfungsi tanpa dependensi tambahan.

Bash
# Format dari file
python3 -m json.tool config.json

# Kontrol lebar indentasi
python3 -m json.tool --indent 2 config.json

# Urutkan kunci secara alfabetis
python3 -m json.tool --sort-keys config.json

# Format dari stdin (mis., dialirkan dari curl)
curl -s https://api.deployments.internal/v1/status | python3 -m json.tool
Peringatan:python3 -m json.tool lebih ketat dari jq: ia menolak koma trailing, komentar, dan ekstensi JSON5. Keketatan ini diinginkan untuk validasi konfigurasi produksi tetapi bisa menjadi titik gesekan saat bekerja dengan JSON yang longgar dari alat pihak ketiga. Ini juga tidak menghasilkan output berwarna, membuat inspeksi terminal kurang ergonomis daripada jq untuk penggunaan interaktif.
Bash
# Validasi dengan kode keluar (semantik sama seperti jq)
python3 -m json.tool config.json > /dev/null && echo "valid" || echo "tidak valid"

# Validasi string inline
echo '{"service":"payments-api","healthy":true}' | python3 -m json.tool > /dev/null
echo "Kode keluar: $?"  # 0 = valid

Output Terminal dengan Penyorotan Sintaks

jq mewarnai outputnya secara default โ€” kunci berwarna biru, string hijau, angka putih. Ketika Anda memerlukan penyorotan sintaks JSON penuh dalam pager yang dapat digulir, atau saat men-debug respons bersarang yang besar dalam sesi terminal, bat memberikan pengalaman yang paling ergonomis. Keduanya berguna untuk debugging dan inspeksi interaktif; tidak satu pun yang boleh digunakan saat menulis output ke file atau respons API.

Instal bat

Bash
# macOS
brew install bat

# Debian / Ubuntu (binary mungkin bernama batcat โ€” buat alias jika demikian)
apt-get install -y bat
# alias bat=batcat   # tambahkan ke ~/.bashrc jika diperlukan

# Verifikasi
bat --version  # bat 0.24.0

Lihat file JSON dengan penyorotan sintaks

Bash
# JSON dengan penyorotan sintaks di pager (tekan q untuk keluar)
bat config/app-config.json

# Nonaktifkan paging โ€” cetak langsung ke terminal
bat --paging=never config/app-config.json

# Teruskan output jq melalui bat untuk inspeksi berwarna
jq '.database' infra/app-config.json | bat --language=json --paging=never

Output jq berwarna dalam pager yang dapat digulir

Bash
# -C memaksa warna bahkan ketika stdout bukan tty (mis. saat meneruskan ke less)
jq -C . logs/deploy-response.json | less -R
Peringatan:Gunakan output berwarna (bat / jq -C) hanya untuk inspeksi terminal dan debugging. Hapus kode warna ANSI sebelum menulis ke file log atau meneruskan ke alat lain โ€” gunakan jq -M . (--monochrome-output) atau bat --plain.

Bekerja dengan File JSON Besar di Bash

Ketika file JSON melebihi 50โ€“100 MB, memuatnya ke memori dengan mode default jq bisa lambat atau memicu OOM pada host yang dibatasi memori (container Docker dengan batas 512 MB, misalnya). jq --stream memancarkan pasangan path/value secara bertahap saat membaca, tanpa melakukan buffer seluruh dokumen. Untuk NDJSON (satu objek JSON per baris), jq memiliki pendekatan native yang lebih efisien.

Stream file JSON besar dengan jq --stream

Bash
# --stream memancarkan pasangan [path, skalar] saat jq membaca input
# Ekstrak semua field "status" dari arsip log besar tanpa memuatnya sepenuhnya
jq -c --stream   'if length == 2 and (.[0][-1] == "status") then .[1] else empty end'   logs/archive-2026-03.json

NDJSON / JSON Lines โ€” proses satu objek per baris

Bash
# NDJSON: satu objek JSON per baris โ€” umum dalam ekspor Kafka, Fluentd, dan Logstash
# -R membaca baris mentah; fromjson? melewati baris yang bukan JSON valid
jq -c -R 'fromjson? | {id: .request_id, status: .http_status, latency: .duration_ms}'   logs/access-2026-03-13.ndjson > logs/summary.ndjson
Bash
# Alternatif loop shell โ€” berguna ketika Anda memerlukan penanganan error per baris
while IFS= read -r line; do
  echo "$line" | jq -c '{id: .request_id, status: .http_status}' 2>/dev/null ||     echo "LEWATI: baris yang cacat" >&2
done < logs/access-2026-03-13.ndjson
Catatan:Beralih dari jq . file.json standar ke --stream ketika file lebih besar dari 50โ€“100 MB atau ketika proses berjalan di dalam container dengan batas memori. Untuk pipeline NDJSON, lebih suka jq -R 'fromjson?' daripada loop while read shell โ€” ini jauh lebih cepat karena menghindari pembuatan subshell per baris.

Kesalahan Umum

โŒ Menimpa file sumber dengan redirection shell

Masalah: Shell membuka dan memotong file output sebelum jq membaca input. Jika sumber dan tujuan adalah path yang sama, jq membaca file kosong.

Solusi: Tulis ke file sementara mktemp terlebih dahulu, lalu ganti aslinya secara atomik dengan mv.

Before ยท Bash
After ยท Bash
jq --indent 2 . settings.json > settings.json
tmp=$(mktemp) && jq --indent 2 . settings.json > "$tmp" && mv "$tmp" settings.json
โŒ Tidak menangani kegagalan jq dalam skrip

Masalah: Tanpa penanganan error, skrip secara diam-diam melanjutkan dengan file yang diformat kosong atau hilang ketika JSON tidak valid โ€” langkah selanjutnya kemudian gagal dengan error yang membingungkan.

Solusi: Tambahkan || { echo '...' >&2; exit 1; } setelah setiap panggilan jq yang menghasilkan output yang digunakan oleh langkah selanjutnya.

Before ยท Bash
After ยท Bash
jq . response.json > formatted.json
jq . response.json > formatted.json || { echo "JSON tidak valid di response.json" >&2; exit 1; }
โŒ Melupakan -s dengan curl

Masalah: curl mencetak bilah kemajuan ke stderr secara default. Ketika stderr digabungkan dengan stdout (mis. dalam subshell atau pengambilan log), teks bilah kemajuan muncul di input jq dan menyebabkan kesalahan parsing.

Solusi: Selalu oper -s (silent) ke curl saat meneruskan ke jq. Gunakan -v atau --fail-with-body secara terpisah jika Anda memerlukan output diagnostik.

Before ยท Bash
After ยท Bash
curl https://api.payments.internal/config | jq .
curl -s https://api.payments.internal/config | jq .
โŒ Menggunakan jq -r . dengan mengharapkan JSON yang diformat

Masalah: Flag -r / --raw-output menghapus tanda kutip string JSON dari nilai string level atas โ€” ia tidak memformat objek atau array. Meneruskan -r . ke input objek menghasilkan objek kompak yang sama, bukan output dengan indentasi.

Solusi: Gunakan jq . (tanpa flag -r) untuk pemformatan. Simpan -r untuk mengekstrak nilai string biasa seperti jq -r '.version' config.json.

Before ยท Bash
After ยท Bash
jq -r . config.json
jq . config.json

jq vs python3 vs json_pp โ€” Perbandingan Cepat

Memilih antara alat tergantung pada apa yang tersedia di lingkungan Anda dan apa yang Anda butuhkan selain pemformatan dasar:

Alat
Validasi
Pewarnaan
Ramah CI
Kode Keluar
Kontrol Indentasi
Instalasi
jq
โœ…
โœ…
โœ…
โœ… (kode 1)
โœ… --indent N
brew / apt / dnf
python3 -m json.tool
โœ… (ketat)
โŒ
โœ…
โœ… (kode 1)
โœ… --indent N
Bawaan (Python)
json_pp (Perl)
โœ…
โŒ
โš ๏ธ sebagian
โš ๏ธ bervariasi
โŒ
Bawaan (Perl)
fx (Node.js)
โœ…
โœ…
โš ๏ธ sebagian
โœ…
โš ๏ธ terbatas
npm install -g fx
node -e JSON.parse
โœ…
โŒ
โœ…
โœ…
โœ… JSON.stringify
Bawaan (Node.js)

Untuk sebagian besar scripting bash dan pekerjaan CI/CD, jq adalah default yang tepat โ€” ia memvalidasi, memformat, memfilter, dan menyediakan kode keluar yang andal dalam satu binary tanpa dependensi runtime. Gunakan python3 -m json.tool sebagai fallback ketika Anda tidak dapat menginstal paket tambahan dan Python sudah ada.

Pertanyaan yang Sering Diajukan

Bagaimana cara memformat file JSON di tempat menggunakan bash?

Jangan pernah mengalihkan output jq kembali ke file yang sama โ€” shell memotong file sebelum jq membacanya. Sebagai gantinya, tulis ke file temp terlebih dahulu, lalu ganti aslinya secara atomik dengan mv.

Bash
tmp=$(mktemp)
jq --indent 2 . config/app-config.json > "$tmp" && mv "$tmp" config/app-config.json
echo "Berhasil diformat di tempat"

Bagaimana cara memvalidasi JSON dalam skrip bash dan keluar saat terjadi kesalahan?

Teruskan atau oper file ke jq dan alihkan stdout ke /dev/null. Gunakan || untuk menangkap exit non-zero dan membatalkan skrip. jq keluar dengan kode 1 untuk setiap kesalahan parsing, membuatnya andal untuk gerbang CI.

Bash
validate_json() {
  local file="$1"
  if jq . "$file" > /dev/null 2>&1; then
    echo "โœ“ JSON valid: $file"
    return 0
  else
    echo "โœ— JSON tidak valid: $file" >&2
    return 1
  fi
}

validate_json infra/k8s/app-config.json || exit 1

Bagaimana cara memformat JSON di bash tanpa menginstal jq?

Gunakan modul json.tool bawaan python3 โ€” dilengkapi dengan setiap instalasi Python standar dan menghasilkan output dengan indentasi yang benar dengan semantik kode keluar yang sama seperti jq.

Bash
# Format dari file
python3 -m json.tool config.json

# Format dari stdin (mis., respons curl)
curl -s https://api.internal/status | python3 -m json.tool --indent 2

Bagaimana cara memformat JSON dari respons curl di bash?

Selalu oper -s (silent) ke curl agar bilah kemajuan tidak merusak input jq. Teruskan stdout curl langsung ke jq.

Bash
DEPLOY_ID="dep_8f3a2b9c"
curl -s \
  -H "Authorization: Bearer $DEPLOY_API_TOKEN" \
  "https://api.deployments.internal/v1/deploys/$DEPLOY_ID" \
  | jq --indent 2 .

Bagaimana cara memformat hanya sebagian file JSON menggunakan jq?

Gunakan ekspresi path jq alih-alih filter identitas (.) untuk mengekstrak dan memformat objek atau array bersarang. Hasilnya sendiri adalah JSON yang diformat.

Bash
# Format hanya blok konfigurasi database
jq --indent 2 '.database' infra/app-config.json

# Format + filter array events hanya ke level error
jq '[.events[] | select(.level == "error") | {id, message, service}]' events.json

Kode keluar apa yang dikembalikan jq untuk JSON yang tidak valid?

jq keluar dengan kode 1 untuk setiap kesalahan parsing dan juga ketika flag -e / --exit-status diatur dan output adalah false atau null. Kode keluar 0 berarti JSON valid berhasil diparsing dan menghasilkan output yang benar. Kode keluar 5 berarti sistem mengalami kesalahan penggunaan.

Bash
# Uji kode keluar secara langsung
echo '{"ok":true}' | jq . > /dev/null 2>&1; echo "exit: $?"  # exit: 0
echo '{bad json}' | jq . > /dev/null 2>&1; echo "exit: $?"   # exit: 1

# flag -e: keluar 1 jika output false/null
echo 'null' | jq -e . > /dev/null 2>&1; echo "exit: $?"      # exit: 1

Alat Terkait

Alternatif dan pelengkap berbasis browser untuk pemformatan JSON bash โ€” berguna ketika Anda memerlukan antarmuka visual, tautan yang dapat dibagikan, atau sedang bekerja di luar terminal:

Tersedia juga dalam:PythonGoJavaScript
NO
Nadia OkonkwoSRE & Shell Scripting Specialist

Nadia is a site reliability engineer who lives in the terminal. She writes Bash scripts that process logs, transform data, and orchestrate infrastructure across fleets of servers. She is a heavy user of jq, awk, and sed and writes about shell one-liners, text processing pipelines, data serialisation from the command line, and the practical Bash patterns that SREs reach for when speed matters more than elegance.

EL
Erik LindqvistPeninjau teknis

Erik is a DevOps engineer who has spent years writing and maintaining the shell scripts that hold CI/CD pipelines together. He writes about Bash best practices, portable POSIX shell, encoding and decoding in shell scripts, secret management from the command line, and the patterns that separate reliable automation scripts from brittle ones. He is a strong believer in making shell scripts readable and testable with tools like bats-core.