Alat yang Anda butuhkan, siap dipakai

Konverter JSON ke YAML

Tempel ke kolom JSON atau YAML, dan kolom seberangnya langsung berubah. Kolom mana pun boleh diedit, dan saat Anda memilih sebuah baris, baris bernilai sama di kolom seberang disorot. Anchor, merge key, dan banyak dokumen pada berkas Kubernetes atau Docker Compose dibaca apa adanya, sedangkan nilai yang dibaca berbeda menurut versi YAML, seperti no, on, 0755, dan 12:30, dikumpulkan pada pemeriksaan tafsir di bawah.

Terakhir diperbarui 2026-10-20Semua perhitungan terjadi di browser Anda
Contoh
Indentasi
Indentasi
Tafsir

Input dan berkas tidak dikirim ke server.

Pemeriksaan tafsir YAML

    Terakhir diperbarui 2026-10-20Masukan Anda tidak disimpan

    Standar ROBERINAlat yang Anda butuhkan,
    siap dipakai.
    • Jelas sekilasPosisi input dan hasil terlihat jelas.
    • Hasil lebih duluAngka utama tampil dulu; prosesnya hanya saat dibutuhkan.
    • Minta lebih sedikitTanpa pendaftaran atau data yang tidak perlu.

    JSON dan YAML adalah dua cara menulis data yang sama

    JSON membungkus objek dengan kurung kurawal { } dan array dengan kurung siku [ ], serta mengapit kunci dan teks dengan tanda kutip ganda. YAML menyatakan struktur yang sama dengan indentasi dan tanda hubung (-) di awal baris, dan umumnya tidak memakai tanda kutip. Objek JSON menjadi mapping di YAML, sedangkan array menjadi sequence. Angka, boolean, dan null juga saling berpadanan. Spesifikasi YAML 1.2 menyebutkan bahwa tujuan utama versi ini adalah menjadikan YAML himpunan super JSON yang ketat, sehingga sebagian besar dokumen JSON yang valid dapat langsung dibaca sebagai YAML.

    Konverter ini membiarkan kedua kolom dapat diedit. Jika Anda mengubah kolom JSON, kolom YAML dibuat ulang; jika Anda mengubah kolom YAML, kolom JSON yang dibuat ulang. Panah di tengah menunjukkan kolom mana yang sedang menjadi sumber. Saat Anda mengklik sebuah baris atau berpindah dengan tombol panah, baris bernilai sama di kolom seberang disorot, dan baris jalur di bawahnya menampilkan posisi seperti owner › name beserta jenis nilainya. Ini berguna terutama pada YAML panjang yang indentasinya saja belum cukup untuk memastikan sebuah baris berada di bawah elemen yang mana.

    DataJSONYAML
    Objek · mapping{"port": 8080}port: 8080
    Array · sequence{"tags": ["web", "api"]}tags:
      - web
      - api
    Bersarang{"db": {"host": "localhost"}}db:
      host: localhost
    Angka dan teks yang tampak seperti angka{"a": 8080, "b": "8080"}a: 8080
    b: "8080"
    Boolean · nilai kosong{"on": true, "x": null}"on": true
    x: null
    Teks beberapa baris{"memo": "baris pertama\nbaris kedua"}memo: |-
      baris pertama
      baris kedua
    Objek kosong · array kosong{"a": {}, "b": []}a: {}
    b: []

    Kapan Anda perlu bolak-balik antara JSON dan YAML

    Berkas konfigurasi yang diedit manusia sering ditulis dalam YAML, sedangkan data yang dipertukarkan antarprogram sering berupa JSON. Karena itu, dalam satu pekerjaan Anda kerap berpindah di antara kedua format.

    • Manifes Kubernetes: Dokumentasi Kubernetes menyarankan agar berkas konfigurasi ditulis dalam YAML, bukan JSON. Keduanya berfungsi, tetapi YAML lebih mudah dibaca manusia. Konversi diperlukan saat sumber daya yang Anda ambil dari klaster dalam bentuk JSON hendak disimpan sebagai berkas YAML, atau sebaliknya saat manifes YAML hendak diberikan ke API atau skrip yang hanya menerima JSON.
    • Docker Compose dan GitHub Actions: Kedua alat ini hanya menerima konfigurasi dalam YAML. Jika contoh atau respons API yang Anda punya berupa JSON, Anda harus memindahkannya ke YAML, dan tanda kutip yang terlewat dapat mengubah tipe sebuah nilai.
    • Validasi dan perbandingan: Untuk memeriksa konfigurasi YAML dengan alat yang menerima JSON, seperti validator JSON Schema atau jq, Anda perlu mengubahnya menjadi JSON lebih dulu. Pada berkas Compose yang banyak memakai anchor dan merge key, hasil yang diperluas ke JSON memperlihatkan sekilas nilai apa yang sebenarnya masuk ke tiap layanan.
    • Periksa jebakan sebelum dibaca: Pada YAML yang sama, jika program pembacanya memakai cara YAML 1.1, no menjadi false dan 0755 menjadi 493. Sebelum konfigurasi didistribusikan, Anda dapat memeriksa nilai semacam itu pada pemeriksaan tafsir di bawah.

    Cara memakai

    1. Tempel ke kolom yang Anda punya, JSON atau YAML. Jika Anda membuka berkas .json, .yaml, atau .yml lewat tombol Buka atau seret-dan-lepas, isinya masuk ke kolom yang sesuai dengan ekstensinya.
    2. Hasilnya langsung muncul di kolom seberang. Jika Anda mengedit kolom hasil, kolom itu menjadi sumber dan kolom pertama dibuat ulang.
    3. Saat Anda memilih sebuah baris, baris bernilai sama di kolom seberang disorot, dan pada tampilan berdampingan sebuah garis penghubung digambar di antara kedua baris. Jika salah satu kolom digulir, kolom lainnya mengikuti ke posisi yang sama.
    4. Pada opsi di atas kolom, pilih indentasi (JSON 2 spasi, 4 spasi, atau 1 baris; YAML 2 atau 4 spasi), acuan tafsir YAML (1.2 atau 1.1), dan apakah array dipecah menjadi beberapa dokumen YAML.
    5. Salin hasilnya atau simpan sebagai berkas dengan tombol di bawah kolom. Jika berkas yang dibuka bernama app.yaml, JSON disimpan sebagai app.json.

    Nilai yang dibaca berbeda oleh YAML 1.1 dan 1.2

    YAML menentukan tipe nilai tanpa tanda kutip dari bentuk tulisannya. Namun aturannya berbeda antarversi. Skema Core YAML 1.2 hanya mengakui true dan false (termasuk variasi huruf besar-kecilnya) sebagai boolean, dan hanya menerima penulisan oktal yang diawali 0o. Aturan tipe YAML 1.1 yang lebih lama membaca yes, no, on, off, y, dan n sebagai boolean, bilangan bulat berawalan 0 sebagai oktal, angka yang dihubungkan titik dua sebagai sexagesimal (basis 60), dan bentuk 2024-03-01 sebagai tanggal. Sebaliknya, aturan bilangan pecahan di 1.1 mewajibkan titik desimal, sehingga 1e5 di 1.1 menjadi teks.

    Masalahnya, masih banyak program yang membaca dengan cara 1.1. PyYAML di Python menyebut dirinya parser YAML 1.1 yang lengkap. Yaml v3 di Go sebagian besar mengikuti 1.2, tetapi membaca dan menulis oktal dalam bentuk 0777 seperti 1.1, dan hanya menerima yes, no, on, dan off sebagai boolean ketika disimpan ke tipe boolean. Dokumentasi Kubernetes juga meminta agar nilai boolean hanya memakai true atau false, tanpa yes, no, on, atau off, dan menyarankan agar nilai yang tampak seperti boolean diberi tanda kutip. Dokumentasi Docker Compose juga menganjurkan agar port berformat HOST:CONTAINER selalu ditulis sebagai string bertanda kutip supaya tidak bentrok dengan sexagesimal YAML.

    Nilai tanpa tanda kutipYAML 1.2 CoreYAML 1.1Hasil JSON → YAML
    trueboolean trueboolean true"true"
    yesteks "yes"boolean true"yes"
    noteks "no"boolean false"no"
    onteks "on"boolean true"on"
    NOteks "NO"boolean false"NO"
    yteks "y"boolean true"y"
    ~nullnull"~"
    0755angka 755angka 493 (oktal)"0755"
    0o17angka 15 (oktal)teks "0o17""0o17"
    12:30teks "12:30"angka 750 (sexagesimal)"12:30"
    2222:22teks "2222:22"angka 133342 (sexagesimal)"2222:22"
    8080:80teks "8080:80"teks "8080:80"8080:80
    1e5angka 1e5teks "1e5""1e5"
    1_000teks "1_000"angka 1000"1_000"
    2024-03-01teks "2024-03-01"tanggal"2024-03-01"

    Kolom terakhir adalah bentuk penulisan di YAML untuk nilai yang di JSON berupa teks. Jika salah satu dari kedua versi saja mungkin membacanya sebagai bukan teks, nilai itu diapit tanda kutip ganda. Pada 8080:80, angka 80 di belakang melebihi satu digit sexagesimal (0 sampai 59) sehingga di versi mana pun tetap berupa teks dan tanda kutip tidak diperlukan, tetapi port yang bagian belakangnya 59 atau kurang, seperti 2222:22, menjadi angka di 1.1.

    Saat kolom YAML menjadi sumber, pemeriksaan tafsir di bawah mencari semua nilai di dalam dokumen yang dibaca berbeda oleh kedua versi, lalu menampilkannya bersama nomor barisnya. Klik chip untuk pindah ke baris itu. Jika acuan tafsir diubah ke 1.1, hasil JSON juga dibuat ulang dengan aturan 1.1, sehingga Anda dapat melihat lebih dulu nilai yang akan benar-benar diterima program seperti PyYAML.

    Cara fitur khusus YAML diubah

    YAMLHasil JSON
    Komentar # …Tidak dimuat. Jumlahnya ditampilkan di baris status
    Anchor &base dan alias *baseNilai anchor diperluas ke tempat alias
    Merge key <<: *baseKunci yang diambil digabungkan ke mapping itu. Jika ada kunci yang ditulis langsung, nilainya yang dipakai
    Beberapa dokumen ---Array yang tiap elemennya satu dokumen
    Teks blok |, >Teks yang berisi pemisah baris sebagai \n (> menyambung baris dengan spasi)
    Tag buatan pengguna seperti !RefTag dilepas dan hanya nilainya yang dipindahkan. Ditampilkan di pemeriksaan tafsir
    Kunci angka 1: aKunci teks "1"
    Mapping dengan [ ] atau { } sebagai kunciError. Kunci JSON hanya boleh berupa teks
    .inf, .nanError. Angka JSON tidak mengenal tak hingga dan NaN

    Saat mengubah JSON menjadi YAML, urutan kunci dipertahankan persis seperti input. Parser JSON bawaan peramban memindahkan kunci berbentuk bilangan bulat seperti "2024" ke awal objek, sehingga konverter ini membaca JSON dengan parser sendiri yang menjaga urutan. Teks yang berisi pemisah baris ditulis sebagai blok |, sedangkan objek kosong dan array kosong ditulis sebagai {} dan [].

    Angka dipindahkan persis seperti yang tertulis

    Spesifikasi JSON (RFC 8259) menjelaskan bahwa angka dapat dipertukarkan dengan baik di antara implementasi yang tidak mengharapkan presisi melebihi presisi ganda (IEEE 754 binary64). Peramban juga menangani angka dengan cara ini, sehingga konverter pada umumnya mengubah 9007199254740993 menjadi 9007199254740992 dan 4.50 menjadi 4.5. Konverter ini tidak menghitung angka, melainkan memindahkan tulisannya apa adanya, sehingga perubahan seperti itu tidak terjadi. Hanya penulisan yang tidak ada di JSON, seperti 0o17 atau 0x1F di sisi YAML, yang diubah menjadi bilangan desimal bernilai sama.

    Ada satu pengecualian. 1e5 di JSON adalah angka pada YAML 1.2, tetapi menjadi teks pada YAML 1.1 karena tidak memiliki titik desimal. Karena itu, pada JSON → YAML notasi eksponen ditulis dengan titik desimal dan tanda, seperti 1.0e+5. Kedua versi membaca tulisan ini sebagai angka 100000. Angka yang ditulis ulang ditampilkan di pemeriksaan tafsir.

    Kesalahan yang sering terjadi

    • Tab untuk indentasi: Spesifikasi YAML melarang karakter tab untuk indentasi karena penanganan tab berbeda-beda di tiap sistem. Ganti tab dengan spasi di editor Anda.
    • Spasi setelah titik dua: port:8080 bukan pasangan kunci-nilai, melainkan satu teks. Antara kunci dan nilai harus ada spasi setelah titik dua, seperti port: 8080.
    • Kunci yang sama dua kali: Spesifikasi YAML menetapkan bahwa kunci dalam mapping harus unik, dan spesifikasi JSON memperingatkan bahwa perilaku program yang menerima objek dengan nama berulang tidak dapat diprediksi. Konverter ini melaporkan kunci yang berulang sebagai error dalam kedua kasus. 1: dan "1": di YAML juga dianggap berulang karena menjadi kunci yang sama di JSON.
    • Sintaks JSON yang longgar: Koma setelah elemen terakhir, tanda kutip tunggal, kunci tanpa tanda kutip, dan komentar // bukan JSON standar. Konfigurasi yang ditulis dalam JSON5 atau JSONC perlu diperbaiki di bagian-bagian itu sebelum dimasukkan.
    • Kunci on: di GitHub Actions: Kunci on: pada alur kerja adalah teks "on" di YAML 1.2, tetapi menjadi boolean true pada parser bergaya 1.1. Inilah sebabnya kunci tampak hilang saat berkas alur kerja dibaca dan diubah dengan skrip Python.
    • Nilai berbentuk jam atau port: 18:30 atau 2222:22 menjadi angka sexagesimal di 1.1. Jam dan port lebih aman diberi tanda kutip.

    Batasan dan catatan

    • Input dikonversi hingga 5 MB (5.242.880 byte), dan hasilnya hingga 10 MB. Berkas yang dapat dibuka adalah UTF-8 (termasuk dengan BOM) dan berkas UTF-16 dengan BOM.
    • Komentar YAML, bentuk tanda kutip, dan baris kosong tidak tersisa saat dibuat ulang. Jika Anda memakai YAML sebagai sumber lalu mengedit kolom JSON, YAML ditulis baru, sehingga YAML yang tadinya berkomentar dapat dipulihkan satu kali lewat tombol Urungkan di baris status.
    • Tag buatan pengguna seperti !Ref di CloudFormation dilepas dan hanya nilainya yang dipindahkan. Tag itu tidak diubah menjadi bentuk {"Ref": …} yang dipakai CloudFormation di JSON.
    • Jika perluasan alias terlalu besar (misalnya satu alias yang menunjuk ke kumpulan alias lain), proses dihentikan untuk mencegah kehabisan sumber daya.
    • Tafsir YAML 1.1 mengikuti aturan tipe 1.1 dari yaml.org. Ada batas yang berbeda dari program 1.1 yang sebenarnya. Misalnya y dan n adalah boolean menurut aturan ini, tetapi PyYAML membacanya sebagai teks. Hasil JSON → YAML memberi tanda kutip pada semua nilai semacam ini, sehingga tetap berupa teks di pembaca mana pun.
    • Konversi hanya menangani sintaks. Apakah nama kunci dan jenis nilai sudah sesuai dengan yang diminta Kubernetes atau Compose, periksalah dengan perintah validasi masing-masing alat.

    Sumber

    Pertanyaan yang sering diajukan

    Mengapa sebagian nilai diberi tanda kutip saat JSON diubah menjadi YAML?

    Nilai seperti "no", "on", "0012", "18:30", dan "2024-03-01" akan dibaca YAML sebagai boolean, angka, atau tanggal, bukan teks, jika tanpa tanda kutip, sehingga diapit tanda kutip ganda. Tujuannya agar nilai yang berupa teks di JSON tetap menjadi teks di YAML; nilainya sendiri tidak berubah.

    Apa beda YAML 1.1 dan 1.2?

    Aturan penentuan tipe untuk teks tanpa tanda kutip berbeda. Pada skema Core 1.2, boolean hanya true dan false, sehingga yes, no, on, dan off adalah teks. Versi 1.1 juga membaca yes, no, on, off, y, dan n sebagai boolean, 0755 sebagai oktal 493, 12:30 sebagai sexagesimal 750, dan 2024-03-01 sebagai tanggal. PyYAML adalah parser YAML 1.1.

    Apakah komentar YAML ikut pindah ke JSON?

    Tidak. JSON tidak memiliki sintaks komentar. Baris status menampilkan jumlah komentar yang hilang, dan jika YAML dibuat ulang karena Anda mengedit kolom JSON saat YAML menjadi sumber, tombol Urungkan memulihkan YAML aslinya.

    Bagaimana anchor (&) dan merge key (<<) diubah?

    Alias (*) diperluas menjadi nilai yang ditunjuk anchor, dan merge key menggabungkan kunci mapping yang diambil ke tempatnya. Jika kunci yang sama sudah ada, nilai yang ditulis langsung pada mapping itu yang dipakai. Karena JSON tidak punya sintaks rujukan, nilai yang sama dimasukkan berulang di setiap tempat pemakaiannya.

    Bagaimana dengan beberapa dokumen yang dipisah ---?

    Jika ada dua dokumen atau lebih, hasilnya adalah array JSON yang tiap elemennya satu dokumen. Sebaliknya, array paling luar di JSON ditulis sebagai satu dokumen per elemen jika sakelar "Array = dokumen (---)" pada kolom YAML diaktifkan.

    Apakah angka besar atau 4.50 tetap utuh?

    Angka dipindahkan persis seperti tulisannya, sehingga bilangan bulat besar seperti 9007199254740993 dan angka 0 di akhir 4.50 tidak berubah. Namun notasi eksponen seperti 1e5 ditulis 1.0e+5 agar YAML 1.1 juga membacanya sebagai angka. Jika program pembaca hasilnya mengubahnya menjadi angka presisi ganda, bilangan bulat besar dapat dibulatkan oleh program itu.

    Apa yang harus diperbaiki jika muncul error?

    Baris jalur menampilkan kolom yang bermasalah, baris dan kolomnya, serta alasannya, dan nomor barisnya disorot. Penyebab yang umum adalah tab pada indentasi, spasi yang hilang setelah titik dua, serta koma terakhir, tanda kutip tunggal, atau komentar di JSON. Jika Anda menempelkan YAML ke kolom JSON, tombol "Pindahkan ke kolom YAML" akan muncul.

    Apakah berkas konfigurasi yang saya masukkan dikirim ke server?

    Tidak. Konversi hanya berlangsung di dalam peramban, dan input maupun berkas tidak dikirim ke server. Isinya juga tidak disimpan di bilah alamat atau penyimpanan peramban, sehingga konfigurasi yang berisi kata sandi atau token tidak keluar dari layar ini.