Utilia

Konverter JSON ke YAML

Konversi JSON ke YAML dan YAML ke JSON di browser Anda, dengan dukungan anchor, merge key, dan file multi-dokumen. Tidak ada yang diunggah.

Konversi

Cara menggunakan konverter JSON ke YAML

  1. Pilih arahnya: JSON → YAML atau YAML → JSON.
  2. Tempel data Anda, atau klik Buka file untuk memuat file .json, .yaml, atau .yml (hingga 10 MB).
  3. Pilih Indentasi (2 atau 4 spasi) dan, jika mau, Urutkan key secara alfabetis.
  4. Klik Konversi, atau terus saja mengetik: hasilnya diperbarui otomatis. Jika masukan tidak valid, pesan kesalahan menyebutkan baris dan kolom masalahnya.
  5. Salin atau unduh hasilnya. Balik arah mengirim hasil kembali ke masukan untuk dikonversi ke arah sebaliknya.

JSON dan YAML: data sama, sintaks berbeda

Dalam praktiknya YAML adalah superset dari JSON: setiap dokumen JSON menggambarkan data yang bisa dinyatakan YAML, dan YAML menambahkan sintaks yang lebih ringan sehingga lebih mudah dibaca dan diedit manusia. Itulah sebabnya manifest Kubernetes, file Docker Compose, pipeline GitHub Actions dan GitLab CI, playbook Ansible, dan spesifikasi OpenAPI biasanya ditulis dalam YAML, sedangkan API dan program saling bertukar JSON.

Data yang sama dalam kedua format:

{"name": "web", "ports": [80, 443], "env": {"DEBUG": false}}
name: web
ports:
  - 80
  - 443
env:
  DEBUG: false

JSON → YAML

Konverter menulis YAML bergaya blok: satu key per baris, daftar dengan tanda hubung, dan objek bersarang diberi indentasi. String panjang tidak pernah dilipat, dan string multi-baris memakai gaya literal | agar baris barunya tetap persis. String yang bisa terbaca YAML sebagai tipe lain diberi tanda kutip: "yes", "1.0", atau "null" tetap menjadi string setelah konversi bolak-balik. Urutkan key mengurutkan key setiap objek secara alfabetis, sehingga dua file konfigurasi lebih mudah dibandingkan.

YAML → JSON

YAML dibaca dengan core schema YAML 1.2, aturan yang sama yang dipakai sebagian besar alat modern:

  • true/false, angka, dan null (atau ~) menjadi nilai JSON; yes, no, on, dan off tetap berupa string, sebagaimana diwajibkan spesifikasi YAML 1.2.
  • Anchor dan alias (&base, *base) diperluas, dan merge key (<<: *base), yang umum di file CI, didukung.
  • File dengan beberapa dokumen yang dipisahkan --- menjadi array JSON dengan satu elemen per dokumen, dan sebuah pesan memberi tahu berapa banyak yang digabung.
  • Komentar dibuang, karena JSON tidak punya komentar.
  • .inf dan .nan tidak punya padanan di JSON; keduanya ditulis sebagai string "Infinity" dan "NaN".

Untuk melindungi browser Anda dari file “billion laughs”, yaitu beberapa alias yang berkembang menjadi miliaran nilai, dokumen yang berkembang menjadi lebih dari satu juta nilai akan ditolak.

Kesalahan YAML yang umum

  • Tab untuk indentasi: YAML hanya mengizinkan spasi.
  • Indentasi tidak konsisten: item dari daftar atau objek yang sama harus dimulai di kolom yang sama.
  • Tidak ada spasi setelah titik dua: key:value adalah satu string, sedangkan key: value adalah pasangan key-value.
  • Karakter khusus tanpa tanda kutip: nilai yang diawali @, backtick, *, &, atau !, atau yang mengandung : atau #, harus diberi tanda kutip.

Pertanyaan yang sering diajukan

Apakah file saya dikirim ke server?

Tidak. Konversi berjalan di browser Anda, dan file konfigurasi, secret, atau data API Anda tidak pernah meninggalkan komputer Anda.

Mengapa “yes” dan “no” tidak dikonversi menjadi boolean?

Sejak YAML 1.2, hanya true dan false yang merupakan boolean. Parser YAML 1.1 yang lebih lama memperlakukan yes, no, on, dan off sebagai boolean, yang menyebabkan “Norway problem” yang terkenal (kode negara NO terbaca sebagai false). Alat ini mengikuti YAML 1.2.

Apakah komentar YAML dipertahankan?

Tidak. JSON tidak punya komentar, sehingga komentar hilang pada YAML → JSON. Saat mengonversi JSON → YAML, Anda bisa menambahkan komentar ke hasilnya setelahnya.

Bisakah saya mengonversi file Kubernetes dengan beberapa resource?

Bisa. Setiap resource yang dipisahkan --- menjadi satu elemen array JSON. Mengonversi array itu kembali ke YAML menghasilkan satu dokumen berisi daftar.

Apakah konverter mengubah urutan key?

Tidak, kecuali Anda mencentang Urutkan key: key tetap dalam urutan kemunculannya di masukan Anda. Satu-satunya pengecualian berasal dari JavaScript sendiri: key berupa bilangan bulat, seperti "10" atau "2", ditaruh paling depan, dalam urutan menaik.