Konverter JSON ↔ YAML Dua Arah
Tempel JSON di kiri untuk mendapatkan YAML di kanan, atau sebaliknya. Kedua panel dapat diedit secara real-time dan sinkron otomatis. Dilengkapi tombol Format JSON, Tukar, dan Salin. Semua konversi berjalan di browser tanpa mengirim data ke server.
Cara kerjanya
Sejarah dan penggunaan JSON dan YAML
JSON (JavaScript Object Notation) diperkenalkan oleh Douglas Crockford di awal tahun 2000-an sebagai format pertukaran data ringan yang berasal dari sintaks literal objek JavaScript. Tata bahasa yang ketat — tanda kutip ganda, tanpa koma akhir, tanpa komentar — membuatnya tidak ambigu dan mudah diurai dalam bahasa pemrograman apa pun. JSON dengan cepat menggantikan XML di API web karena ringkasannya dan kompatibilitas asli dengan JavaScript.
YAML (YAML Ain't Markup Language) dibuat pada tahun 2001 oleh Clark Evans dan Ingy döt Net dengan tujuan lebih ramah bagi manusia. YAML 1.2 secara teknis adalah superset dari JSON — setiap dokumen JSON yang valid adalah YAML yang valid — tetapi YAML menambahkan struktur berbasis indentasi, komentar, string multi-baris, dan inferensi tipe, menjadikannya lebih nyaman untuk file konfigurasi yang diedit secara manual.
Kapan menggunakan JSON versus YAML
JSON unggul ketika mesin yang membaca data: API REST, catatan database, komunikasi antar-layanan, dan localStorage. Kesederhanaannya berarti hampir setiap bahasa pemrograman memiliki parser JSON bawaan, dan aturan sintaks yang ketat menghilangkan ambiguitas. Jika konsumen utama adalah kode, JSON hampir selalu merupakan pilihan yang tepat.
YAML bersinar dalam file konfigurasi yang diedit oleh manusia: Docker Compose, manifes Kubernetes, alur kerja GitHub Actions, dan playbook Ansible menggunakan YAML secara default. Komentar memungkinkan dokumentasi inline, string multi-baris menjaga nilai panjang tetap terbaca, dan ketiadaan kurung kurawal membuat konfigurasi hierarki lebih bersih.
Jebakan umum saat mengkonversi
Sensitivitas indentasi YAML adalah sumber kesalahan yang paling umum. Tidak seperti kurung kurawal JSON, satu spasi yang salah tempat mengubah struktur. YAML juga melakukan inferensi tipe otomatis: yes tanpa tanda kutip menjadi boolean true, dan 0755 mungkin diinterpretasikan sebagai angka oktal. Konverter ini membungkus string yang mungkin salah diinterpretasikan dengan tanda kutip untuk mempertahankan tipe asli.
Karakter khusus menghadirkan tantangan lain. Titik dua diikuti spasi (: ), tanda hash (#), dan karakter khusus di awal string harus diberi tanda kutip di YAML. Konverter ini menangani kasus-kasus ini secara otomatis, tetapi fitur YAML lanjutan seperti jangkar, alias, dan skalar blok multi-baris di luar cakupan dan akan menampilkan pesan kesalahan yang jelas.
Pertanyaan umum
›Apakah YAML merupakan superset dari JSON?
Ya. YAML 1.2 adalah superset ketat dari JSON, artinya setiap dokumen JSON yang valid adalah YAML yang valid. Sebaliknya tidak selalu benar: fitur YAML seperti komentar, jangkar, dan skalar blok tidak memiliki padanan di JSON.
›Untuk apa YAML terutama digunakan?
YAML paling umum digunakan dalam file konfigurasi: Docker Compose (docker-compose.yml), manifes Kubernetes, GitHub Actions (.github/workflows), playbook Ansible. Gayanya yang mudah dibaca cocok untuk file yang diedit secara manual oleh developer.
›JSON atau YAML untuk file konfigurasi?
YAML umumnya menang untuk konfigurasi yang diedit manusia karena mendukung komentar dan tidak terlalu berisik secara visual. JSON lebih baik untuk konfigurasi yang dihasilkan atau dikonsumsi mesin. Banyak alat (ESLint, Prettier, tsconfig) menerima keduanya.
›Bagaimana YAML menangani karakter khusus?
String yang mengandung titik dua diikuti spasi, karakter khusus di awal ({, [, #, dll.), atau nilai yang terlihat seperti boolean atau angka harus diberi tanda kutip. Tanda kutip tunggal menonaktifkan semua escape; tanda kutip ganda menggunakan escape backslash mirip JSON. Konverter ini secara otomatis menambahkan tanda kutip di mana diperlukan.
›Apakah konversi JSON ke YAML tanpa kehilangan data?
Untuk tipe yang didukung JSON (string, angka, boolean, null, objek, array) konversi tidak kehilangan data. Satu-satunya masalah potensial adalah inferensi tipe YAML pada nilai tanpa tanda kutip, itulah mengapa konverter ini memberi tanda kutip pada string yang mungkin salah diinterpretasikan.
›Bagaimana mengkonversi YAML ke JSON di Python?
Gunakan library PyYAML: import yaml, json; data = yaml.safe_load(open('file.yaml')); print(json.dumps(data, indent=2)). Fungsi safe_load menghindari eksekusi tag YAML sembarangan, yang penting untuk keamanan.
›Bagaimana mengkonversi JSON ke YAML di Node.js?
Dengan paket js-yaml: const yaml = require('js-yaml'); const obj = JSON.parse(fs.readFileSync('file.json')); console.log(yaml.dump(obj)). Untuk pendekatan tanpa dependensi, tulis serializer YAML secara manual, seperti yang dilakukan konverter ini.
›Fitur YAML apa yang tidak didukung?
Konverter ini sengaja melewati fitur YAML lanjutan: jangkar (&jangkar), alias (*alias), tag tipe (!!int, !!str), skalar blok multi-baris (| dan >), pemisah dokumen (---). Fitur-fitur ini mencakup kurang dari 5% YAML nyata. Untuk kasus tersebut, gunakan library YAML lengkap.
Alat terkait
Terakhir diperbarui: