Konverter JSON ke YAML
Tempel JSON, dapatkan YAML seketika. Konversi langsung di browser. Siap untuk K8s/Compose, indentasi 2/4 spasi, penanganan kutipan otomatis. 100% privat.
Opsi · 2 spasi · auto · block
Apa Itu YAML dan Mengapa Mengonversi dari JSON?
YAML (YAML Ain't Markup Language) adalah format serialisasi data yang mudah dibaca manusia, dirancang untuk file konfigurasi, infrastructure-as-code, dan di mana pun manusia menulis data yang akan dibaca mesin. Sintaks berbasis indentasinya tidak memerlukan kurung kurawal atau tanda kurung, sehingga jauh lebih mudah dibaca daripada JSON untuk struktur bertingkat yang kompleks. Kubernetes, Helm, Ansible, Docker Compose, GitHub Actions, CircleCI, dan hampir semua alat cloud-native menggunakan YAML sebagai format konfigurasi utamanya. Mengonversi JSON ke YAML karena itu merupakan salah satu tugas paling umum dalam DevOps dan pengembangan backend — Anda menerima definisi resource dari API dalam JSON, dan Anda membutuhkan manifest YAML untuk di-commit ke version control.
Alat ini memiliki empat perbedaan penting dibandingkan konverter online pada umumnya:
**1. Masalah Norway — Kutipan Aman Otomatis.** Masalah terbesar dalam konversi JSON-ke-YAML adalah masalah Norway YAML. Dalam YAML 1.1 (yang masih digunakan jutaan parser produksi, termasuk Kubernetes lama, PyYAML, Ansible, dan Ruby's Psych), string biasa yes, no, on, off, y, dan n diparsing sebagai nilai boolean true/false. Hal ini terkenal menyebabkan masalah pada kode negara ISO untuk Norwegia ("NO" → false) dan telah menyebabkan gangguan produksi nyata dalam konfigurasi Kubernetes. YAML 1.2 memperbaiki ini, tetapi parser Anda mungkin belum menggunakan 1.2. Mode kutipan Auto default alat ini menggunakan library eemeli/yaml dengan skema YAML 1.1, sehingga secara otomatis membungkus string bermasalah Norway dalam tanda kutip, menjamin round-trip yang aman melalui parser YAML 1.1 maupun 1.2. Pelajari lebih lanjut di artikel kompanion kami di Masalah Norway YAML dan Perbedaan JSON-YAML.
**2. Pemeliharaan Urutan Kunci.** Berbeda dengan beberapa konverter yang mengurutkan kunci secara alfabetis, alat ini mempertahankan urutan penyisipan kunci asli dari JSON Anda — sesuai dengan perilaku JSON.parse() di semua JavaScript engine modern. Ini penting untuk manifest Kubernetes (di mana apiVersion dan kind diharapkan pertama berdasarkan konvensi), spesifikasi OpenAPI (di mana info muncul sebelum paths), dan konfigurasi mana pun di mana urutan field bermakna untuk keterbacaan atau diff.
**3. Peringatan Presisi Angka Besar.** Angka JSON yang lebih besar dari 2^53 - 1 (9007199254740991) tidak dapat direpresentasikan secara tepat dalam float double-precision IEEE 754 JavaScript. Ketika JSON.parse() membaca bilangan bulat besar seperti field resourceVersion Kubernetes (yang merupakan bilangan bulat 64-bit di server), ia memotongnya secara diam-diam. Ini adalah keterbatasan JavaScript browser fundamental yang mempengaruhi setiap alat JSON berbasis browser, termasuk alat ini. Solusi aman adalah memastikan bilangan bulat besar disimpan sebagai string dalam JSON sebelum mengonversi.
**4. Privasi 100% Berbasis Browser.** Data JSON Anda — yang sering berisi API key, kredensial database, konfigurasi layanan internal, dan rahasia produksi — tidak pernah meninggalkan browser Anda. Tidak ada data yang dikirim ke server mana pun. Anda dapat memverifikasi ini di tab Network browser Anda. Lihat alat kompanion kami untuk arah sebaliknya di Konverter YAML ke JSON, dan JSON Formatter kami jika Anda perlu memvalidasi dan pretty-print JSON sebelum mengonversi.
Kemudahan baca YAML memiliki tradeoff: ia memiliki lebih banyak edge case parsing daripada JSON. Di luar masalah Norway, YAML memiliki keanehan angka oktal (0777 diparsing sebagai 511 di YAML 1.1), sintaks string multi-baris (| untuk literal, > untuk folded), referensi anchor dan alias (&anchor dan *alias), dan dukungan multi-dokumen (pemisah ---). JSON tidak memiliki kompleksitas ini — ini adalah format yang ketat dan minimal dengan hanya enam tipe data. Untuk pertukaran data antar-mesin, JSON hampir selalu merupakan pilihan yang lebih baik. Untuk file konfigurasi yang diedit manusia di mana keterbacaan dan komentar penting, YAML menang. Konverter ini memberikan yang terbaik dari keduanya: gunakan JSON secara terprogram, konversi ke YAML untuk infrastruktur Anda.
// Convert JSON to YAML in Node.js using the eemeli/yaml library
import { Document } from 'yaml';
const data = JSON.parse('{"apiVersion":"apps/v1","kind":"Deployment"}');
// version: '1.1' ensures Norway-problem strings (yes/no/on/off/y/n)
// are automatically quoted in the output for YAML 1.1 parser safety
const doc = new Document(data, { version: '1.1' });
const yamlString = doc.toString({
indent: 2,
lineWidth: 0, // disable line wrapping
defaultStringType: 'PLAIN', // Auto mode: only quote when needed
});
console.log(yamlString);
// apiVersion: apps/v1
// kind: Deployment Fitur Utama
Konversi Langsung
Output YAML diperbarui seketika saat Anda mengetik atau menempel JSON — tidak perlu tombol Convert. Input besar (>200KB) secara otomatis beralih ke mode manual agar browser tetap responsif.
Indentasi 2 atau 4 Spasi
Beralih antara 2 spasi (standar untuk Kubernetes, Docker Compose, dan GitHub Actions) dan 4 spasi (konvensi Ansible). Tab YAML dilarang — alat ini selalu menggunakan spasi.
Kutipan Aman Otomatis (Norway-safe)
Mode Auto default menggunakan skema YAML 1.1 untuk secara otomatis mengutip string seperti "no", "yes", "on", "off", "y", dan "n" yang akan salah dibaca sebagai boolean oleh parser YAML 1.1, mencegah misconfiguration produksi.
Gaya Block dan Flow
Gaya Block menghasilkan YAML berindentasi yang mudah dibaca manusia, ideal untuk manifest dan file konfigurasi. Gaya Flow menghasilkan YAML ringkas bergaya inline mirip JSON — berguna untuk cuplikan dokumentasi atau alat yang lebih suka output minimal.
Privasi 100% Berbasis Browser
Semua konversi berjalan secara lokal di browser Anda menggunakan JavaScript. Data JSON Anda — termasuk API key, kredensial, dan konfigurasi produksi — tidak pernah dikirim ke server mana pun, tidak pernah dicatat, dan tidak pernah disimpan.
Menangani File K8s, Compose, dan Terraform
Dioptimalkan untuk kasus penggunaan DevOps dunia nyata: manifest Kubernetes, stack Docker Compose, nilai chart Helm, workflow GitHub Actions, spesifikasi OpenAPI, dan output Terraform JSON plan — dengan contoh untuk setiap kasus.
Contoh
Kubernetes Deployment
{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"name":"my-app","namespace":"production","labels":{"app":"my-app","version":"1.0.0"}},"spec":{"replicas":3,"selector":{"matchLabels":{"app":"my-app"}},"template":{"metadata":{"labels":{"app":"my-app"}},"spec":{"containers":[{"name":"my-app","image":"my-app:1.0.0","ports":[{"containerPort":8080}],"resources":{"requests":{"memory":"64Mi","cpu":"250m"},"limits":{"memory":"128Mi","cpu":"500m"}}}]}}}} Konversi manifest Kubernetes Deployment dari format respons JSON API ke YAML untuk diterapkan dengan kubectl apply -f
Docker Compose
{"version":"3.9","services":{"web":{"image":"nginx:1.25-alpine","ports":["80:80","443:443"],"environment":{"NGINX_HOST":"example.com","NGINX_PORT":"80"},"depends_on":["db"],"restart":"unless-stopped"},"db":{"image":"postgres:16-alpine","environment":{"POSTGRES_DB":"mydb","POSTGRES_USER":"admin","POSTGRES_PASSWORD":"secret"},"volumes":["pgdata:/var/lib/postgresql/data"]}},"volumes":{"pgdata":{}}} Konversi definisi layanan Docker Compose dari JSON ke format YAML yang dibutuhkan oleh docker compose up
GitHub Actions Workflow
{"name":"CI","on":{"push":{"branches":["main"]},"pull_request":{"branches":["main"]}},"jobs":{"build":{"runs-on":"ubuntu-latest","steps":[{"uses":"actions/checkout@v4"},{"name":"Set up Node.js","uses":"actions/setup-node@v4","with":{"node-version":"20","cache":"pnpm"}},{"name":"Install dependencies","run":"pnpm install --frozen-lockfile"},{"name":"Run tests","run":"pnpm test"}]}}} Konversi definisi workflow CI GitHub Actions dari JSON ke YAML untuk di-commit ke .github/workflows/
Spesifikasi OpenAPI
{"openapi":"3.0.3","info":{"title":"User API","version":"1.0.0","description":"Manage application users"},"paths":{"/users":{"get":{"summary":"List users","operationId":"listUsers","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","default":20}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}}},"/users/{id}":{"get":{"summary":"Get user","operationId":"getUser","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"}}}}},"components":{"schemas":{"User":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string","format":"email"}}}}}} Konversi spesifikasi OpenAPI 3.0 dari JSON ke YAML — format yang diutamakan untuk Swagger UI, Redoc, dan sebagian besar tooling API
package.json
{"name":"my-app","version":"1.0.0","description":"A sample Node.js application","private":true,"scripts":{"dev":"vite","build":"tsc && vite build","preview":"vite preview","test":"vitest","lint":"eslint . --ext .ts,.tsx"},"dependencies":{"react":"^18.3.0","react-dom":"^18.3.0"},"devDependencies":{"typescript":"^5.4.0","vite":"^5.2.0","vitest":"^1.5.0","eslint":"^8.57.0","@types/react":"^18.3.0"},"engines":{"node":">=20.0.0","pnpm":">=9.0.0"}} Konversi package.json Node.js yang khas ke YAML — berguna untuk memigrasikan konfigurasi proyek ke alat yang lebih suka YAML
Terraform JSON Plan
{"format_version":"1.0","terraform_version":"1.7.4","variables":{"region":{"value":"us-east-1"}},"planned_values":{"root_module":{"resources":[{"address":"aws_s3_bucket.main","mode":"managed","type":"aws_s3_bucket","name":"main","values":{"bucket":"my-app-assets","force_destroy":false,"tags":{"Environment":"production","ManagedBy":"terraform"}}}]}},"resource_changes":[{"address":"aws_s3_bucket.main","mode":"managed","type":"aws_s3_bucket","name":"main","change":{"actions":["create"],"before":null,"after":{"bucket":"my-app-assets","force_destroy":false}}}]} Konversi output Terraform JSON plan ke YAML untuk tinjauan manusia, jejak audit GitOps, dan pipeline CI/CD — fitur pembeda yang sering diabaikan konverter lain
Cara Menggunakan
- 1
Tempel JSON Anda
Masukkan atau tempel data JSON ke kolom input di atas. Anda juga dapat klik 'Muat contoh' untuk mencoba sampel seperti Kubernetes Deployment, file Docker Compose, atau Terraform plan.
- 2
Lihat Output YAML Langsung
YAML muncul seketika di panel output. Sesuaikan Options (indentasi 2/4, kutipan Auto/Double/Single, gaya Block/Flow) agar sesuai dengan kebutuhan alat target Anda.
- 3
Salin atau Unduh
Klik Copy untuk mengambil YAML ke clipboard, atau Download untuk menyimpannya sebagai file .yaml yang siap untuk kubectl apply, docker compose up, atau alat lainnya.
Kesalahan Konversi Umum
Trailing Comma
JSON tidak mengizinkan koma setelah elemen terakhir dalam objek atau array. Ini sangat umum terjadi saat menyalin dari kode JavaScript, yang memang mengizinkan trailing comma. Hapus koma terakhir sebelum mengonversi.
{"name": "Alice", "role": "admin",} {"name": "Alice", "role": "admin"} Tanda Kutip Tunggal
JSON mengharuskan tanda kutip ganda untuk semua nilai string dan kunci objek. Tanda kutip tunggal valid di JavaScript dan Python, tetapi merupakan kesalahan sintaks di JSON.
{'name': 'Alice', 'active': true} {"name": "Alice", "active": true} Kunci Tanpa Tanda Kutip
Semua kunci objek JSON harus diapit tanda kutip ganda. Kunci tanpa tanda kutip valid di literal objek JavaScript tetapi akan menyebabkan error parse di JSON ketat.
{name: "Alice", role: "admin"} {"name": "Alice", "role": "admin"} Komentar Tidak Diizinkan
JSON standar tidak mendukung komentar dalam bentuk apa pun — tidak //, /* */, maupun #. Jika Anda membutuhkan komentar dalam konfigurasi, gunakan YAML (yang mendukung komentar #) atau JSONC (JSON with Comments, digunakan oleh VS Code). Hapus semua komentar sebelum menggunakan data sebagai JSON.
{"port": 8080 // HTTP port} {"port": 8080} Masalah Norway YAML (ditangani otomatis dalam mode Auto)
Dalam parser YAML 1.1 (digunakan oleh Kubernetes, Ansible, PyYAML, Ruby Psych), string biasa yes, no, on, off, y, dan n diparsing sebagai boolean true/false alih-alih string. Mode Auto alat ini secara otomatis mengutip nilai-nilai ini di output YAML untuk menjamin round-trip yang aman melalui parser YAML 1.1 atau 1.2 mana pun. Jika Anda memilih mode kutipan Double atau Single, semua string dikutip secara eksplisit, yang juga menghindari masalah — tetapi mode Auto menghasilkan output yang paling alami.
# JSON input: {"country": "no", "enabled": "yes"}
# YAML without quoting (dangerous):
country: no
enabled: yes
# YAML 1.1 parser reads: country=false, enabled=true # YAML with Auto quoting (safe): country: 'no' enabled: 'yes' # YAML 1.1 parser reads: country="no", enabled="yes"
Kehilangan Presisi untuk Bilangan Bulat Besar
JavaScript hanya dapat merepresentasikan bilangan bulat secara tepat hingga 2^53 - 1 (9007199254740991). Bilangan bulat JSON yang lebih besar dari ini — seperti field resourceVersion Kubernetes (yang merupakan int64 di server) — dibulatkan secara diam-diam saat diparsing oleh JSON.parse(). Angka yang terpotong ini kemudian muncul di output YAML. Ini adalah keterbatasan JavaScript browser fundamental yang mempengaruhi semua alat JSON berbasis browser. Solusi aman adalah menyimpan bilangan bulat besar sebagai string dalam JSON sebelum mengonversi.
// JSON input (resourceVersion is int64 on K8s server)
{"resourceVersion": 9007199254740993}
// JavaScript reads it as: 9007199254740992 (precision lost)
// YAML output will contain the wrong number // Store large integers as strings to preserve precision
{"resourceVersion": "9007199254740993"}
// YAML output: resourceVersion: '9007199254740993' (exact) Kasus Penggunaan Umum
- Manifest Kubernetes
- Konversi respons JSON API dari kubectl get -o json atau Kubernetes API ke manifest YAML untuk workflow GitOps, overlay Kustomize, dan deployment kubectl apply -f.
- File Docker Compose
- Ubah output JSON docker inspect atau konfigurasi layanan yang dihasilkan secara terprogram menjadi file docker-compose.yaml yang kompatibel dengan docker compose up dan deployment Docker Stack.
- Nilai Chart Helm
- Konversi ekspor konfigurasi JSON ke file YAML values untuk deployment chart Helm, memungkinkan konfigurasi infrastruktur yang dikontrol versi dengan sintaks YAML yang bersih.
- Workflow GitHub Actions
- Bangun definisi workflow GitHub Actions secara terprogram dalam JSON dan konversi ke format .github/workflows/*.yaml yang dibutuhkan oleh GitHub Actions runner.
- Spesifikasi OpenAPI
- Konversi spesifikasi OpenAPI/Swagger dari format JSON yang dikembalikan banyak framework (FastAPI, SpringDoc) ke format YAML yang lebih disukai Swagger UI, Redoc, dan tooling API gateway.
- Migrasi Konfigurasi
- Migrasikan konfigurasi aplikasi yang tersimpan dalam JSON (appsettings.json, config.json) ke format YAML untuk alat yang memerlukan atau lebih suka YAML, menambahkan kemampuan menggunakan komentar untuk dokumentasi.
Detail Teknis
- Parsing JSON Sesuai RFC 8259
- Input JSON diparsing menggunakan JSON.parse() bawaan browser, yang sepenuhnya sesuai RFC 8259. Ini memberikan pesan error sintaks yang akurat termasuk informasi posisi (nomor baris dan kolom secara best-effort) dan menangani semua tipe data JSON: string, angka, boolean, null, array, dan objek.
- Output YAML 1.2 via eemeli/yaml Document API dengan Skema YAML 1.1
- YAML dihasilkan menggunakan library eemeli/yaml (v2.8+, aman dari CVE) via Document API-nya dengan version: '1.1'. Kombinasi ini menghasilkan output yang sesuai YAML 1.2 sambil menerapkan aturan kutipan YAML 1.1 — artinya string bermasalah Norway (yes/no/on/off/y/n) secara otomatis dikutip di output, membuatnya aman untuk parser YAML 1.1 maupun 1.2. Line wrapping dinonaktifkan (lineWidth: 0) untuk mempertahankan string panjang secara utuh.
- 100% Berbasis Browser — Tanpa Upload, Tanpa Server
- Semua pemrosesan terjadi sepenuhnya di JavaScript engine browser Anda. Tidak ada data yang ditransmisikan melalui jaringan kapan pun. Input yang lebih besar dari 200KB secara otomatis beralih dari mode langsung ke mode manual (memerlukan klik Convert eksplisit) untuk menjaga browser tetap responsif dan mencegah pemblokiran thread utama selama serialisasi berat.
Praktik Terbaik
- Selalu Gunakan Mode Kutipan Auto untuk Konfigurasi DevOps
- Saat mengonversi JSON untuk digunakan di Kubernetes, Helm, Ansible, Docker Compose, atau GitHub Actions, selalu gunakan mode kutipan Auto (Norway-safe) yang merupakan default. Parser YAML 1.1 dalam alat-alat ini akan secara diam-diam salah mengartikan yes, no, on, off, y, dan n biasa sebagai boolean — mode Auto mencegah ini secara transparan.
- Gunakan Indentasi 2 Spasi untuk Alat Cloud-Native
- Kubernetes, Docker Compose, GitHub Actions, dan Helm semuanya menggunakan indentasi 2 spasi berdasarkan konvensi. Menggunakan indentasi 4 spasi dalam file-file ini adalah YAML yang valid tetapi akan menciptakan ketidakkonsistenan dengan contoh komunitas, konfigurasi yang dihasilkan otomatis, dan manifest tim Anda yang sudah ada.
- Simpan Bilangan Bulat Besar sebagai String Sebelum Mengonversi
- Field resourceVersion, uid, dan int64 lainnya dari Kubernetes dari API server dapat melebihi rentang bilangan bulat aman JavaScript (2^53 - 1). Jika Anda membutuhkan presisi numerik yang tepat, simpan nilai-nilai ini sebagai string JSON sebelum mengonversi. Ini sangat penting untuk output kubectl get -o json yang menyertakan field yang dihasilkan sisi server.
- Validasi JSON Terlebih Dahulu
- Jika sumber JSON Anda ditulis tangan atau berasal dari sistem yang kadang menghasilkan output tidak valid (trailing comma, kunci tanpa kutip, komentar), validasikan dengan JSON formatter sebelum mengonversi. Gunakan JSON Formatter kami untuk mendeteksi dan memperbaiki error sintaks terlebih dahulu, lalu konversi JSON yang bersih ke YAML.
- Lebih Suka Gaya Block untuk File yang Masuk ke Version Control
- YAML gaya Block menghasilkan diff yang bersih dan mudah dibaca manusia di Git karena setiap field muncul di barisnya sendiri. Gaya Flow (ringkas, inline) membuat diff lebih sulit dibaca dan ditinjau. Simpan gaya Flow untuk menyematkan cuplikan YAML singkat dalam dokumentasi atau untuk alat yang memerlukan output ringkas.
Pertanyaan yang Sering Diajukan
Bagaimana cara mengonversi JSON ke YAML secara online?
Apa itu masalah Norway YAML dan bagaimana alat ini menanganinya?
Mengapa masalah Norway penting untuk Kubernetes dan DevOps?
Apakah sebaiknya menggunakan indentasi 2 spasi atau 4 spasi untuk YAML?
Bagaimana cara menggunakan alat ini untuk membuat manifest Kubernetes?
Bagaimana cara mengonversi JSON Docker Compose ke YAML?
Bisakah angka JSON yang lebih besar dari 2^53 kehilangan presisi saat dikonversi ke YAML?
Apakah konverter mempertahankan urutan kunci asli dari JSON saya?
Kapan sebaiknya menggunakan JSON versus YAML?
Bagaimana cara mengonversi JSON ke YAML di command line?
Bagaimana cara mengonversi JSON ke YAML di Python, Node.js, atau Go?
Apakah data JSON saya dikirim ke server mana pun saat menggunakan alat ini?
Apakah ada batas ukuran file untuk input JSON?
Alat Terkait
Lihat semua alat →Decode & Encode Base64 Online — Konversi Instan di Browser
Encoding & Pemformatan
Decode dan encode Base64 online gratis. Konversi real-time dengan dukungan UTF-8 dan emoji. 100% privat di browser Anda. Tanpa pendaftaran.
Format & Validasi JSON Online — Gratis, Cepat, Privat
Encoding & Pemformatan
Format, validasi, dan rapikan JSON langsung di browser Anda. Alat online gratis dengan deteksi error, minifikasi, dan salin sekali klik. 100% privat.
URL Encoder & Decoder dengan URL Parser Bawaan
Encoding & Pemformatan
Decode atau encode URL online gratis secara real-time. Dual mode: encodeURI & encodeURIComponent, URL parser bawaan. Tanpa pendaftaran, 100% privat di browser.
Konverter YAML ke JSON
Encoding & Pemformatan
Tempel YAML, dapatkan JSON seketika. Konversi langsung di browser. Manifest K8s, spesifikasi OpenAPI, nilai Helm didukung. 100% privat, tanpa upload.
Konverter Basis Bilangan — Biner, Hex, Desimal & Oktal
Alat Konversi
Konversi antara biner, hex, desimal, oktal, dan basis apa pun (2-36) secara instan. Presisi BigInt, output siap kode. Gratis, privat — tanpa pendaftaran.
Kompres Gambar Online — JPEG, PNG & WebP
Alat Konversi
Kompres JPEG, PNG & WebP hingga 80% lebih kecil di browser, tanpa upload. Batch 20 gambar, atur kualitas, bandingkan sebelum & sesudah. Gratis & privat.