JSON ke YAML Konverter

Konversi JSON ke format YAML dengan pratinjau real-time.

Tidak ada data yang meninggalkan perangkat Anda
Indentasi:

Cara menggunakan

  1. Tempel atau ketik data JSON Anda di area kiri.
  2. Pilih indentasi pilihan Anda (2 atau 4 spasi).
  3. Keluaran YAML muncul secara real-time di kanan. Klik Salin untuk menyalinnya, atau Unduh untuk menyimpan sebagai file.

Pertanyaan umum

Apakah data saya aman?

Ya, konversi dilakukan sepenuhnya di browser Anda. Tidak ada data yang dikirim ke server.

Opsi indentasi apa yang tersedia?

Anda dapat memilih indentasi 2 atau 4 spasi. Default adalah 2 spasi.

Bisakah saya menyalin keluaran langsung?

Ya, klik tombol "Salin" di bawah area keluaran untuk menyalin YAML ke clipboard.

Cara kerjanya

  1. Tempel JSON: masukkan JSON valid apa pun, dari pasangan kunci-nilai datar hingga objek dan array yang bersarang dalam.
  2. Konversi seketika: alat mengubah JSON menjadi YAML dengan indentasi yang benar, menghapus tanda kutip dari kunci string, dan menerjemahkan tipe null, boolean, dan numerik.
  3. Konfigurasi keluaran: tetapkan lebar indentasi (2 atau 4 spasi) dan pilih antara gaya blok atau aliran untuk koleksi.
  4. Salin YAML: hasilnya siap untuk ditempel di file konfigurasi, pipeline CI/CD, atau manifest Kubernetes.

Mengapa mengonversi JSON ke YAML?

YAML adalah format konfigurasi pilihan untuk alat infrastruktur seperti Kubernetes, Docker Compose, GitHub Actions, Ansible, dan Helm chart, lebih mudah dibaca daripada JSON, mendukung komentar, dan tidak memerlukan tanda kutip di sekitar setiap string. Mengonversi respons API, bagian package.json, atau struktur data dari JSON ke YAML adalah tugas yang sering dilakukan dalam DevOps dan pengembangan back-end. Struktur berbasis indentasi YAML lebih mudah dibaca manusia, sementara JSON lebih disukai untuk API dan generasi terprogram, konverter ini menjembatani keduanya.

Pemetaan tipe

Apa itu konversi JSON ke YAML?

Konversi JSON ke YAML menerjemahkan pohon pasangan kunci-nilai dari satu format serialisasi ke yang lain sambil mempertahankan data yang mendasarinya. Kedua format menggambarkan bentuk data yang sama (string, angka, boolean, null, array, objek), tetapi JSON menggunakan kurung kurawal dan kurung siku sementara YAML menggunakan indentasi dan tanda hubung. Konfigurasi yang sama name: app, version: 1, ports: 80, 443 dapat diekspresikan dalam keduanya, dan konverter bergerak di antara mereka tanpa kehilangan makna.

JSON, ditemukan oleh Douglas Crockford sekitar tahun 2001 dan distandarisasi sebagai RFC 4627 pada 2006 dan ECMA-404 pada 2013, adalah lingua franca API web. YAML 1.0 (2001), 1.1 (2005) dan 1.2 (2009) oleh Clark Evans, Ingy doet Net, dan Oren Ben-Kiki dirancang sebagai superset JSON yang dioptimalkan untuk keterbacaan manusia, dengan dukungan untuk komentar, string multi-baris, anchor dan alias. Tooling DevOps modern (Kubernetes, Docker Compose, GitHub Actions, Ansible, Helm) default ke YAML karena config ditulis dan ditinjau oleh manusia.

Konverter ini memasangkan kedua format berdampingan. Tempel JSON di kiri, klik JSON ke YAML, dan panel kanan diperbarui dengan YAML valid pada kedalaman indentasi yang Anda pilih (2 atau 4 spasi). Tombol balik menjalankan proses yang sama secara terbalik. Konversi menggunakan library js-yaml (Vitaly Puzrin, 2011) yang dimuat dari jsDelivr, yang mengimplementasikan spesifikasi YAML 1.2 cukup akurat untuk melakukan round-trip pada manifest Kubernetes, chart Helm, dan spec OpenAPI.

Apa yang ada di dalam konverter

Antarmuka menggunakan layout grid dua-panel: JSON di kiri, YAML di kanan. Pada layar lebih sempit dari 768 piksel, layout menumpuk secara vertikal. Di atas panel, pemilih indentasi memungkinkan Anda memilih 2 atau 4 spasi per level. Pilihan aktif disorot, dan indentasi berlaku untuk kedua arah konversi.

Setiap panel memiliki tombol aksinya sendiri. Panel JSON menawarkan JSON ke YAML (konversi) dan Clear. Panel YAML menawarkan YAML ke JSON (balik), Copy (clipboard), dan Download .yaml (simpan sebagai file dengan ekstensi .yaml dan pengkodean UTF-8). Banner kesalahan di bawah konverter menampilkan kesalahan parse dengan nomor baris dan pesan singkat, sehingga Anda dapat memperbaiki input yang tidak valid tanpa meninggalkan alat.

Di balik layar, konversi JSON ke YAML menggunakan JSON.parse plus fungsi dump js-yaml. Arah YAML ke JSON menggunakan fungsi load js-yaml plus JSON.stringify dengan indent 2 spasi. Kedua arah adalah fungsi murni dari input, tidak ada state yang dibawa antar konversi, dan menyegarkan halaman me-reset semuanya.

Sejarah dan latar belakang

Douglas Crockford menentukan JSON (2001)

Douglas Crockford mendokumentasikan sintaks JSON pada April 2001 saat di State Software, setelah menyadari sintaks objek literal JavaScript dapat berfungsi sebagai format data yang independen bahasa. Spec sengaja minimal: enam tipe, dua koleksi, tanpa komentar, tanpa skema. RFC 4627 diikuti pada 2006 dan ECMA-404 pada 2013. Minimalisme adalah persis yang membuat JSON ada di mana-mana di web.

YAML 1.0 diterbitkan (2001)

Clark Evans, Ingy doet Net, dan Oren Ben-Kiki merilis YAML 1.0 pada Mei 2001, tahun yang sama dengan JSON. Akronim aslinya adalah Yet Another Markup Language tetapi diubah menjadi YAML Ain't Markup Language untuk memperjelas bahwa YAML menargetkan data konfigurasi, bukan markup dokumen. Spec 1.0 ambisius, mendukung anchor, alias, stream multi-dokumen, tag kustom, dan komentar.

YAML 1.1 dan masalah Norwegia (2005)

YAML 1.1 (Januari 2005) memperketat spec tetapi mempertahankan perilaku pemaksaan boolean yang terkenal di mana string yes, no, on, off, y, n, true, false, plus varian dengan huruf kapital, semua menjadi boolean. Ini adalah Masalah Norwegia: kode negara ISO yang tidak dikutip NO menjadi boolean false. Bug menggigit pengguna Kubernetes awal sampai YAML 1.2 (2009) menghapus ejaan boolean alternatif.

YAML 1.2 mendeklarasikan JSON sebagai subset (2009)

YAML 1.2 (Oktober 2009) secara eksplisit membuat JSON menjadi subset ketat dari YAML, sehingga dokumen JSON yang valid juga merupakan dokumen YAML yang valid. Ini adalah kemenangan desain besar: alat yang menangani YAML 1.2 dapat mem-parse JSON secara gratis, menyederhanakan implementasi konverter dan validator. Versi yang masih digunakan di sebagian besar tooling saat ini adalah 1.2 atau profil yang kompatibel dengan 1.1.

Kubernetes mengirimkan manifest YAML (2015)

Kubernetes 1.0, dirilis oleh Google pada Juli 2015, mendefinisikan sumber daya cluster (Pod, Deployment, Service) menggunakan manifest YAML. Pilihan didorong oleh keterbacaan untuk tim ops yang terbiasa dengan editor teks dan kontrol versi. Helm (2016) menambahkan templating di atas, GitHub Actions (2018) mengadopsi YAML untuk alur kerja, dan playbook Ansible (2012-2018) memantapkan YAML sebagai bahasa config DevOps yang dominan.

js-yaml menjadi library JavaScript de facto (mulai 2011)

Vitaly Puzrin menerbitkan js-yaml pada 2011 sebagai port JavaScript murni dari PyYAML. Versi-versi berikutnya (2.0 pada 2014, 3.0 pada 2015, 4.0 pada 2021) melacak spec YAML 1.2, menambahkan skema untuk memilih keluar dari fitur berbahaya, dan mencapai lebih dari 50 juta unduhan npm mingguan. Library dibundel oleh webpack, parcel dan esbuild untuk pekerjaan YAML sisi browser apa pun, dan ini yang digunakan konverter ini di balik layar.

Alur kerja praktis

Menulis manifest Kubernetes

Ketika Anda menghasilkan Pod atau Deployment melalui kubectl run --dry-run=client -o json, Anda mendapatkan JSON. Tempel di sini, klik JSON ke YAML, dan Anda memiliki manifest siap untuk di-commit ke git. Konversi mempertahankan spec bersarang, variabel lingkungan, dan batas sumber daya persis seperti yang akan dibaca Kubernetes.

Definisi layanan Docker Compose

Teman setim mengirimkan snippet JSON untuk layanan baru. Tempelkan, konversi, dan jatuhkan YAML ke docker-compose.yml Anda. Indent 2-spasi adalah default Compose, jadi biarkan opsi indent pada 2.

Alur kerja GitHub Actions

Ketika Anda membuat scaffold alur kerja dari generator template berbasis JSON atau menyalin langkah dari respons API JSON, tempelkan di sini dan konversi. Output langsung masuk ke .github/workflows/*.yml. Ingat bahwa GitHub Actions juga menerima JSON di beberapa bidang, tetapi YAML adalah bentuk kanoniknya.

Playbook Ansible

Inventaris Ansible sering memulai hidup sebagai JSON yang diekspor dari CMDB atau database aset. Tempel, konversi ke YAML, dan Anda memiliki file hosts atau header playbook yang sesuai dengan gaya yang diharapkan Ansible. Gunakan indent 2-spasi untuk mencocokkan panduan gaya komunitas Ansible.

Nilai chart Helm

Vendor mengirimkan konfigurasi sampel JSON untuk chart Helm mereka. Konversi ke YAML dan jatuhkan ke values.yaml. Konversi menghormati kunci bersarang (image.repository, image.tag, resources.limits.memory) persis seperti yang diharapkan Helm.

Spec OpenAPI 3

Swagger Editor mengekspor spec OpenAPI baik sebagai JSON maupun YAML. Ketika alat memancarkan JSON tetapi tim Anda menggunakan YAML dalam kontrol versi (atau sebaliknya), konverter ini adalah cara tercepat untuk beralih format tanpa menjalankan Node, Python, atau yq.

Jebakan umum

Masalah Norwegia (yes, no, on, off sebagai boolean)

Dalam YAML 1.1, string yes, no, on, off, y, n, true, false (dan varian dengan huruf kapital) semuanya boolean. Jadi kode negara ISO yang tidak dikutip NO menjadi boolean false. js-yaml 4.x default ke YAML 1.2 yang hanya memperlakukan true dan false sebagai boolean, tetapi parser YAML yang lebih lama masih dapat tersandung. Kutip string yang ambigu secara eksplisit jika Anda mencampur versi tooling.

Tab bukan indentasi YAML yang valid

YAML menggunakan spasi, bukan tab, untuk indentasi. Jika editor Anda menyisipkan tab secara default, YAML yang dikonversi akan gagal mem-parse di Kubernetes, Helm, atau loader YAML yang ketat. Konfigurasikan editor Anda untuk menggunakan 2 atau 4 spasi untuk file .yaml dan .yml, atau jalankan linter (yamllint) sebelum commit.

Anchor dan alias tidak bertahan dari konversi JSON

YAML mendukung anchor (&name) dan alias (*name) untuk menggunakan kembali nilai. Ketika Anda mengkonversi YAML ke JSON, anchor diperluas inline karena JSON tidak memiliki fitur yang setara. Konversi balik JSON ke YAML tidak akan memperkenalkan kembali anchor secara otomatis. Jika Anda perlu anchor, tulis dengan tangan setelah konversi.

String multi-baris memerlukan indikator eksplisit

String JSON dengan baris baru tertanam (Hello\nWorld) dikonversi ke YAML menggunakan literal block scalar (|) atau folded block scalar (>). js-yaml memilih bentuk yang tepat, tetapi jika Anda mengedit hasilnya secara manual, ingatlah bahwa | mempertahankan baris baru dan > melipatnya menjadi spasi.

Angka besar kehilangan presisi

Angka JavaScript adalah float IEEE 754 64-bit, sehingga bilangan bulat melebihi 2 pangkat 53 (sekitar 9 kuadriliun) kehilangan presisi ketika diparse oleh JSON.parse. Konversi ke YAML mempertahankan nilai dengan kerugian, bukan yang asli. Jika data Anda memiliki pengidentifikasi gaya BigInt, kodekan sebagai string di JSON sebelum mengkonversi.

Komentar hilang dalam YAML ke JSON

YAML mendukung komentar #, JSON tidak. Ketika Anda mengkonversi YAML dengan komentar kembali ke JSON, komentar dilucuti karena JSON tidak memiliki sintaks untuk mereka. Jika Anda melakukan round-trip YAML melalui JSON untuk pemrosesan, harapkan kehilangan setiap baris #. Alat seperti yq atau ruamel.yaml dapat mempertahankan komentar, tetapi js-yaml yang sesuai spec menghapusnya.

Privasi dan penanganan data

Semua konversi berjalan di browser Anda melalui library js-yaml yang dibundel ke halaman. Kami tidak mengirim JSON atau YAML Anda ke server, tidak mencatat input, dan tidak menjalankan analitik pada konten konversi Anda. Tombol Salin menggunakan API Clipboard yang memerlukan gestur pengguna, dan tombol Download .yaml menggunakan URL blob dalam memori, sehingga file tidak pernah melakukan round-trip melalui jaringan apa pun.

Setelah halaman dimuat (termasuk file CDN js-yaml), alat bekerja offline. Anda dapat memutuskan dari jaringan dan mengkonversi konfigurasi sensitif (kunci API, URL database, nama layanan internal) tanpa ada yang meninggalkan perangkat Anda. File js-yaml disajikan dari jsDelivr dengan hash Subresource Integrity, sehingga bundle tidak dapat dipertukarkan secara diam-diam.

Saat tidak menggunakan konverter ini

Streaming megabyte data

Konverter memuat seluruh input ke memori, mem-parse, dan memancarkan hasilnya dalam satu tembakan. Untuk file JSON atau YAML multi-megabyte, gunakan yq atau jq dalam pipeline shell, atau parser streaming dalam bahasa favorit Anda. Browser bukan alat yang tepat di atas 5 hingga 10 megabyte.

Data biner di JSON

Jika JSON Anda memiliki blob biner berkode Base64 yang harus diperiksa atau dimodifikasi, mengkonversi ke YAML tidak akan membuka kemasannya. YAML mendukung biner bertag (!!binary) yang ditangani js-yaml, tetapi byte tetap Base64. Gunakan editor biner khusus untuk pekerjaan tingkat byte yang sebenarnya.

Validasi skema

Konverter ini memeriksa bahwa input adalah JSON atau YAML yang valid, tetapi tidak memvalidasi terhadap skema (JSON Schema, OpenAPI, Kubernetes CRD, Helm values). Jika Anda perlu tahu apakah manifest Kubernetes secara struktural benar untuk cluster 1.28, jalankan kubectl --dry-run=server atau alat seperti kubeval, kubeconform.

Refactoring sadar skema

Jika Anda perlu mengganti nama bidang di ratusan file YAML, atau meningkatkan versi API (apps/v1beta1 ke apps/v1), gunakan sed, ast-grep, atau yq dengan kueri jalur eksplisit. Konverter hanya mengubah antar format, tidak mengedit konten semantik.

Lebih banyak pertanyaan

Apakah JSON lebih aman dari YAML?

Untuk keamanan, ya. yaml.load PyYAML (sebelum 5.1) dan parser permisif serupa dapat mengeksekusi kode arbitrer dari input YAML yang tidak terpercaya melalui objek Python bertag. JSON tidak memiliki fitur seperti itu, setiap parser JSON aman menurut desain. Parser YAML modern (PyYAML 5.1+, js-yaml sejak 4.0) default ke safe-load, sehingga jarak telah menyempit, tetapi JSON masih merupakan default yang lebih aman untuk input yang tidak terpercaya.

Mengapa YAML memilih indentasi daripada kurung?

Penulis YAML ingin config dibaca seperti outline, sehingga mereka menggunakan konvensi yang sama dengan whitespace bermakna Python. Kurung kurawal dan kurung siku adalah YAML yang valid (gaya flow), tetapi gaya block dengan indentasi adalah default karena memindai lebih alami untuk manusia yang mengedit dalam teks biasa. Trade-off adalah bahwa whitespace menjadi bermakna, yang menangkap editor yang otomatis memangkas spasi tertinggal.

Apakah YAML selalu merupakan superset ketat dari JSON?

Sejak YAML 1.2 (2009), ya. Dokumen JSON valid apa pun juga merupakan dokumen YAML 1.2 yang valid. YAML 1.1 memiliki beberapa kasus tepi (angka seksagesimal, masalah Norwegia) di mana hubungannya lebih longgar. js-yaml modern menggunakan 1.2 secara default, sehingga properti superset berlaku untuk alat ini.

Mengapa YAML Kubernetes begitu bertele-tele?

Manifest Kubernetes memiliki bentuk top-level tetap (apiVersion, kind, metadata, spec) dan spec berisi objek bersarang yang mencerminkan struct Go internal API. Verbositas adalah efek samping dari memetakan API berorientasi objek ke format teks datar. Alat seperti Kustomize, Helm, dan Pulumi mengurangi verbositas, tetapi YAML yang mendasarinya adalah apa yang sebenarnya dikirim kubectl ke cluster.

Bisakah saya melakukan round-trip JSON melalui YAML tanpa kehilangan data?

Untuk sebagian besar JSON, ya. String, angka, boolean, null, array, objek semuanya bertahan. Kasus tepi termasuk bilangan bulat yang sangat besar (kehilangan presisi), pasangan surrogate Unicode (tergantung parser), dan urutan kunci (YAML dapat menyusun ulang). Jika kunci JSON Anda harus mempertahankan urutan aslinya, gunakan alat yang menghormati urutan penyisipan (OrderedDict Python, json-stable-stringify di JavaScript).

Bagaimana dengan TOML dan HCL?

TOML (Tom's Obvious Minimal Language, 2013 oleh Tom Preston-Werner) digunakan oleh Cargo (Rust), pyproject.toml (Python), dan lainnya. HCL (HashiCorp Configuration Language, 2014) digunakan oleh Terraform. Keduanya menargetkan kasus penggunaan konfigurasi tetapi menggunakan sintaks yang berbeda. Konverter ini hanya menangani JSON dan YAML. Untuk TOML atau HCL, gunakan konverter khusus atau yq dengan plugin yang tepat.

Alat terkait

Pemformat & Validator JSON Gratis Online Pemformat & Validator JSON Gratis Online Konverter XML ke CSV Gratis