Initializing, please wait a moment

JSON vs YAML vs TOML, Dijelaskan

Ditinjau terakhir 2026-04-27. Buka JSON parser atau JSON to CSV untuk pekerjaan JSON di browser.

Jawaban 30 detik. JSON untuk mesin - sintaks ketat, mudah di-parse, jelek dibaca. YAML untuk manusia - spasi signifikan, mendukung anchor dan referensi, rentan terhadap error parsing yang halus. TOML adalah jalan tengah - bersih untuk konfigurasi dangkal, canggung untuk nesting dalam. Pilih berdasarkan siapa yang mengedit file dan seberapa kompleks datanya.

Tiga format berdampingan

Konfigurasi yang sama, tiga cara:

JSON                        YAML                  TOML
{                           server:               [server]
  "server": {                 host: "localhost"   host = "localhost"
    "host": "localhost",      port: 8080          port = 8080
    "port": 8080
  }
}                                                 

JSON - ketat dan tidak ambigu

Tujuan desain JSON adalah format yang dapat di-parse identik oleh bahasa apa pun. Tata bahasanya kecil (enam tipe data, aturan spasi yang terdefinisi dengan baik). Setiap parser menghasilkan pohon yang sama. Keseragaman itu adalah alasan mengapa JSON mendominasi API, file konfigurasi untuk alat yang dikirim dengan parser JSON, dan serialisasi mesin-ke-mesin.

Di mana JSON canggung: komentar tidak diizinkan, koma akhir adalah error sintaks, dan konfigurasi nested dalam menjadi tidak terbaca untuk manusia. Perbaikannya adalah JSON5 (JSON dengan komentar dan koma akhir) untuk konfigurasi yang diedit manusia, sambil menjaga JSON murni untuk transportasi.

YAML - mudah dibaca, kadang terlalu cerdik

YAML terbaca seperti catatan outline. Indentasi membuat struktur; daftar menggunakan tanda hubung; nilai tidak perlu tanda kutip. Field-nya singkat dan file padat. Itulah mengapa YAML mendominasi Kubernetes, GitHub Actions, Docker Compose, dan konfigurasi CI - semua tempat di mana manusia mengedit file setiap hari.

Di mana YAML menyakitkan: spasi signifikan dan tab merusak parser. String "yes" diparsing sebagai boolean true. Kode negara Norwegia "NO" diparsing sebagai false. Angka dengan nol di depan diparsing sebagai oktal. String multi-baris memiliki empat sintaks berbeda. Format dapat dibaca manusia tetapi tidak aman bagi manusia; bug parsing halus umum terjadi di produksi. Perbaikannya adalah lint setiap file YAML di CI dan kutip string apa pun yang terlihat dapat disalahartikan.

TOML - sederhana, dangkal

TOML menargetkan ceruk file konfigurasi di mana YAML terlalu longgar dan JSON terlalu verbose. Bagian dalam kurung siku, pasangan kunci-nilai dengan tanda sama dengan, tipe tanggal dan waktu native. Cargo (manajer paket Rust), pyproject.toml di Python modern, dan beberapa alat konfigurasi menggunakannya.

Di mana TOML canggung: data nested dalam. Sintaks untuk array tabel verbose dan tidak jelas secara visual. Untuk nesting lebih dari 2-3 level, YAML atau JSON terbaca lebih baik. TOML menang ketika konfigurasi secara alami datar - daftar dependensi, daftar pengaturan build, sekumpulan kecil bagian bernama.

Aturan keputusan

Mesin-ke-mesin: JSON. Konfigurasi manusia diedit harian, dengan struktur sebagian besar datar: TOML. Konfigurasi manusia diedit harian, dengan struktur nested dalam: YAML, dengan linting di CI. Saat ragu, JSON - ketegasannya adalah asuransi murah.

Untuk konversi antar format, lihat JSON to CSV atau JSON parser. Untuk perkakas developer lain, hub alat developer.

Untuk validasi JSON langsung di browser, lihat JSON parser: validate vs format vs tree view - menjelaskan kapan setiap tindakan JSON parser masuk akal. Untuk membandingkan JSON formatter online dengan alat lain, lihat JSON formatter vs alternatives.