Konverter JSON ↔ YAML

Konversi JSON ke YAML atau YAML ke JSON dengan sekali klik, untuk Kubernetes, Docker Compose, pipeline CI, dan spesifikasi OpenAPI.

Berjalan 100% di browser Anda. Apa pun yang Anda tempel tidak diunggah atau disimpan.
Input JSON atau YAML
Hasil
Siap.

Cara memakai konverter JSON ↔ YAML

  1. Pilih arah: JSON → YAML atau YAML → JSON.
  2. Tempel dokumen Anda ke kotak input, atau ketik langsung.
  3. Hasil konversi muncul seketika. Jika input tidak valid, pesan galat menunjuk ke baris yang tidak bisa diurai.
  4. Salin hasilnya ke manifest, file pipeline, atau klien API Anda.

Konversi berjalan sepenuhnya di browser Anda, sehingga file konfigurasi yang berisi hostname internal atau kredensial tidak pernah diunggah atau disimpan di server kami.

JSON dan YAML: data yang sama, dua notasi

JSON (JavaScript Object Notation) dan YAML (YAML Ain't Markup Language) menggambarkan struktur dasar yang sama: mapping (objek dengan pasangan kunci–nilai), sequence (array), dan scalar (string, angka, boolean, dan null). Sejak YAML 1.2, setiap dokumen JSON yang valid juga valid sebagai YAML, itulah sebabnya konversi JSON ke YAML tidak menghilangkan apa pun. Arah sebaliknya biasanya juga tanpa kehilangan, tetapi YAML memiliki fitur yang tidak dimiliki JSON, seperti komentar, anchor, dan string blok multibaris, dan fitur itu diratakan atau dibuang saat Anda menghasilkan JSON.

Pengembang sangat sering mengonversi di antara keduanya:

  • Manifest Kubernetes biasanya ditulis dalam YAML, sedangkan kubectl get -o json dan API-nya sendiri memakai JSON.
  • File Docker Compose (compose.yaml) berformat YAML; mengonversinya ke JSON membantu saat menghasilkannya dari skrip.
  • GitHub Actions dan sebagian besar sistem CI mendefinisikan alur kerja dalam YAML.
  • Spesifikasi OpenAPI bisa ditulis dalam kedua format, dan banyak alat menerima keduanya.

Berikut objek yang sama dalam kedua notasi:

{"service": "web", "replicas": 3, "ports": [80, 443], "debug": false}
service: web
replicas: 3
ports:
  - 80
  - 443
debug: false

Jebakan YAML yang umum

“Masalah Norwegia”

YAML 1.1 memperlakukan yes, no, on, off, y, dan n tanpa tanda kutip (dalam berbagai kapitalisasi) sebagai boolean. Karena itu, daftar kode negara bisa mengubah Norwegia menjadi false pada parser yang mengikuti YAML 1.1:

countries:
  - GB
  - NO     # YAML 1.1: false   YAML 1.2 core schema: "NO"
  - SE

YAML 1.2 membatasi boolean hanya pada true dan false, tetapi banyak pustaka yang dipakai luas masih secara default berperilaku seperti 1.1. Kebiasaan yang aman adalah memberi tanda kutip pada string apa pun yang bisa disangka tipe lain: "NO", "on", "1.10", "0755". Nomor versi adalah jebakan klasik: 1.10 tanpa tanda kutip menjadi angka 1.1.

Indentasi

YAML memakai indentasi untuk menyatakan penyarangan (nesting), dan tab tidak diizinkan untuk indentasi. Satu spasi yang tidak sejajar mengubah struktur atau merusak proses penguraian:

spec:
  containers:
    - name: app
      image: nginx
     ports:          # kurang satu spasi: galat penguraian
        - containerPort: 80

Anchor dan alias

YAML memungkinkan Anda mendefinisikan sebuah blok sekali dengan &name dan memakainya kembali dengan *name, sering dikombinasikan dengan merge key <<. JSON tidak memiliki padanannya, jadi konverter memperluas setiap alias menjadi salinan penuh:

defaults: &defaults
  restart: always
  logging: json
web:
  <<: *defaults
  image: nginx

Perhatikan bahwa merge key adalah ekstensi YAML 1.1; tidak semua parser mendukungnya.

Tips untuk konversi yang bersih

  • Komentar (# ...) dibuang saat mengonversi YAML ke JSON, karena JSON tidak memiliki sintaks komentar. Jadikan file YAML sebagai acuan utama (source of truth) jika komentar penting.
  • String blok multibaris (| mempertahankan jeda baris, > melipatnya menjadi spasi) menjadi string biasa dengan escape \n di JSON.
  • Bilangan bulat besar di atas 253 bisa kehilangan presisi di alat berbasis JavaScript. Beri tanda kutip pada ID yang harus tetap persis.
  • Untuk merapikan hasilnya lebih lanjut, jalankan melalui JSON Formatter & Validator atau YAML Formatter & Validator.
Tips: Satu file bisa berisi beberapa dokumen YAML yang dipisahkan oleh ---, seperti yang sering dijumpai pada bundel Kubernetes. JSON tidak mengenal konsep itu, jadi pecah file multidokumen sebelum mengonversi, atau perkirakan hanya satu dokumen pada outputnya.

Pertanyaan yang sering diajukan

Apakah setiap file JSON valid sebagai YAML?

Menurut YAML 1.2, ya: YAML dirancang sebagai superset dari JSON. Anda bisa memasukkan JSON langsung ke sebagian besar parser YAML. Mengonversinya ke YAML gaya blok hanya membuatnya lebih mudah dibaca dan diedit.

Mengapa tipe nilai YAML saya berubah setelah konversi?

Scalar tanpa tanda kutip ditentukan oleh parser. Nilai seperti no, off, 1e3, 0x1F, atau 2024-01-01 bisa menjadi boolean, angka, atau tanggal tergantung versi YAML dan pustakanya. Beri tanda kutip agar tetap menjadi string.

Bolehkah memakai tab di YAML?

Tidak. Spesifikasi YAML melarang karakter tab untuk indentasi. Gunakan spasi, biasanya dua per tingkat, dan atur editor Anda untuk menyisipkan spasi secara otomatis.

Apakah komentar bertahan dalam konversi bolak-balik?

Tidak. Komentar hilang begitu YAML diubah menjadi JSON, dan tidak bisa dipulihkan saat mengonversi kembali. Simpan komentar di file YAML aslinya.

Diperbarui

Tersalin ke clipboard