Skip to content

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.

Tanpa Pelacakan Berjalan di Browser Gratis
Opsi · 2 spasi · auto · block
Indentasi
Gaya
0 karakter
YAML Output
0 baris
Ditinjau untuk kepatuhan RFC 8259, output spesifikasi YAML 1.2, dan kebenaran penanganan masalah Norway — Go Tools Engineering Team · May 4, 2026

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. 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. 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. 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.

✗ Salah
{"name": "Alice", "role": "admin",}
✓ Benar
{"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.

✗ Salah
{'name': 'Alice', 'active': true}
✓ Benar
{"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.

✗ Salah
{name: "Alice", role: "admin"}
✓ Benar
{"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.

✗ Salah
{"port": 8080 // HTTP port}
✓ Benar
{"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.

✗ Salah
# JSON input: {"country": "no", "enabled": "yes"}
# YAML without quoting (dangerous):
country: no
enabled: yes
# YAML 1.1 parser reads: country=false, enabled=true
✓ Benar
# 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.

✗ Salah
// JSON input (resourceVersion is int64 on K8s server)
{"resourceVersion": 9007199254740993}
// JavaScript reads it as: 9007199254740992 (precision lost)
// YAML output will contain the wrong number
✓ Benar
// 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?
Tempel JSON Anda ke kolom input di atas. Alat ini mengonversinya ke YAML seketika di browser Anda — tanpa perlu klik tombol. Anda dapat mengatur indentasi (2 atau 4 spasi), gaya kutipan (Auto, Double, atau Single), dan gaya output (Block atau Flow) dari panel Options. Setelah YAML muncul di area output, klik Copy untuk menyalinnya ke clipboard atau Download untuk menyimpannya sebagai file .yaml. Semua proses berjalan secara lokal — data Anda tidak pernah meninggalkan perangkat Anda.
Apa itu masalah Norway YAML dan bagaimana alat ini menanganinya?
Masalah Norway YAML merujuk pada keanehan dalam spesifikasi YAML 1.1 di mana string biasa seperti "no", "yes", "on", "off", "y", dan "n" diparsing sebagai nilai boolean (false/true) alih-alih string. Hal ini menyebabkan masalah nyata yang terkenal di mana kode negara ISO untuk Norwegia ("NO") salah dibaca sebagai boolean false dalam playbook Ansible dan konfigurasi Kubernetes. Dalam YAML 1.2, ini sudah diperbaiki — string biasa selalu berupa string. Namun, jutaan parser produksi (versi Kubernetes lama, PyYAML, Ansible, Ruby's Psych) masih menggunakan YAML 1.1. Mode kutipan Auto pada alat ini (yang merupakan default) secara otomatis membungkus string bermasalah Norway dalam tanda kutip sehingga dapat melewati parser YAML 1.1 maupun 1.2 dengan aman. Ketika string bermasalah Norway terdeteksi di input Anda, banner peringatan mencantumkan nilai mana saja yang telah dikutip otomatis.
Mengapa masalah Norway penting untuk Kubernetes dan DevOps?
Manifest YAML Kubernetes, nilai chart Helm, playbook Ansible, dan workflow GitHub Actions semuanya diparsing oleh alat yang secara historis menggunakan YAML 1.1. Jika Anda memiliki kunci konfigurasi dengan nilai "no" (misalnya, kode negara, flag enabled dalam bentuk string, atau field boolean kustom), parser YAML 1.1 akan mengonversinya secara diam-diam ke boolean false. Ini dapat menyebabkan misconfiguration layanan yang sangat sulit di-debug karena YAML tampak benar saat dilihat sebagai teks tetapi berperilaku berbeda saat diparsing. Selalu gunakan mode kutipan Auto saat mengonversi JSON untuk digunakan di Kubernetes atau toolchain DevOps apa pun demi menjamin round-trip yang aman.
Apakah sebaiknya menggunakan indentasi 2 spasi atau 4 spasi untuk YAML?
Gunakan indentasi 2 spasi untuk manifest Kubernetes, nilai Helm, file Docker Compose, dan workflow GitHub Actions — alat-alat ini dirancang dengan YAML 2 spasi dan merupakan konvensi komunitas. Gunakan indentasi 4 spasi untuk playbook Ansible (yang mengikuti konvensi 4 spasi) dan ketika tim atau organisasi Anda memiliki panduan gaya yang mewajibkannya. YAML melarang tab sepenuhnya — semua indentasi harus menggunakan spasi. Alat ini menggunakan 2 spasi sebagai default, yang merupakan pilihan tepat untuk sebagian besar kasus penggunaan cloud-native.
Bagaimana cara menggunakan alat ini untuk membuat manifest Kubernetes?
Jika Anda memiliki definisi resource Kubernetes dalam JSON (dari kubectl get deployment my-app -o json, respons API, atau blok resource Terraform), tempelkan ke kolom input. Pilih indentasi 2 spasi (default) dan kutipan Auto (default, yang menangani masalah Norway). Output YAML langsung siap untuk kubectl apply -f. Anda juga dapat klik Download untuk menyimpan file dengan ekstensi .yaml dan langsung meng-pipe-nya ke kubectl apply -f -. Contoh K8s Deployment di atas menampilkan manifest deployment lengkap yang bisa Anda muat dan modifikasi.
Bagaimana cara mengonversi JSON Docker Compose ke YAML?
Tempel JSON Docker Compose Anda ke kolom input. Gunakan indentasi 2 spasi (konvensi Docker Compose) dan gaya Block. Output YAML kompatibel dengan docker compose up, docker compose config, dan Docker Stack. Skenario umum adalah mengekspor konfigurasi stack yang berjalan dengan docker inspect lalu mengonversinya kembali ke file compose.yaml. Contoh Docker Compose di atas mencakup definisi layanan dengan port, variabel environment, volume, dan depends_on.
Bisakah angka JSON yang lebih besar dari 2^53 kehilangan presisi saat dikonversi ke YAML?
Ya. Ini adalah keterbatasan fundamental JavaScript: tipe Number IEEE 754 double-precision float yang digunakan JavaScript hanya dapat merepresentasikan bilangan bulat secara tepat hingga 2^53 - 1 (9007199254740991). Bilangan bulat di atas itu — seperti field resourceVersion Kubernetes (yang merupakan int64 di server) — akan dibulatkan secara diam-diam saat diparsing oleh JSON.parse(). Misalnya, nilai 9007199254740993 menjadi 9007199254740992 dalam JavaScript, dan angka yang terpotong ini akan muncul di output YAML Anda. Ini mempengaruhi semua alat JSON berbasis browser, bukan hanya alat ini. Solusi aman adalah menyimpan bilangan bulat besar sebagai string dalam JSON Anda ("resourceVersion": "9007199254740993") — mereka akan muncul sebagai string YAML tanpa kehilangan presisi.
Apakah konverter mempertahankan urutan kunci asli dari JSON saya?
Ya. Library eemeli/yaml yang digunakan alat ini mempertahankan urutan penyisipan, yang sesuai dengan perilaku JSON.parse() di semua JavaScript engine modern (V8, SpiderMonkey, JavaScriptCore). Kunci muncul di output YAML dalam urutan yang sama seperti di input JSON. Ini penting untuk manifest Kubernetes dan spesifikasi OpenAPI di mana urutan field sering bermakna untuk keterbacaan dan diff.
Kapan sebaiknya menggunakan JSON versus YAML?
Gunakan JSON ketika: Anda membangun API dan layanan web (JSON adalah format pertukaran universal), ketika kecepatan parsing mesin penting, ketika Anda membutuhkan keamanan tipe yang ketat, atau ketika konsumennya adalah aplikasi JavaScript/TypeScript. Gunakan YAML ketika: menulis file konfigurasi yang dimaksudkan untuk diedit manusia (manifest Kubernetes, pipeline CI/CD, playbook Ansible, nilai Helm), ketika Anda menginginkan komentar dalam konfigurasi, atau ketika keterbacaan lebih penting daripada keketatan. Aturan praktis: jika mesin yang menulis atau membacanya pertama kali, gunakan JSON; jika manusia yang menulis dan mesin yang membacanya, gunakan YAML.
Bagaimana cara mengonversi JSON ke YAML di command line?
Pendekatan paling populer adalah menggabungkan yq dan jq. Install yq (versi Mike Farah, bukan yang Python): brew install yq di macOS atau wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/local/bin/yq untuk Linux. Kemudian jalankan: cat input.json | yq -P untuk pretty-print sebagai YAML. Alternatif: yq -o yaml input.json atau cat input.json | python3 -c "import sys, json, yaml; yaml.dump(json.load(sys.stdin), sys.stdout, default_flow_style=False)". Khusus untuk Kubernetes: kubectl get deployment my-app -o yaml mengonversi langsung dari API cluster.
Bagaimana cara mengonversi JSON ke YAML di Python, Node.js, atau Go?
Di Python: import json, yaml; yaml.dump(json.load(open('input.json')), open('output.yaml', 'w'), default_flow_style=False) menggunakan PyYAML, atau ruamel.yaml untuk fidelitas round-trip. Di Node.js: import { Document } from 'yaml'; const doc = new Document(JSON.parse(input), { version: '1.1' }); const result = doc.toString({ indent: 2, lineWidth: 0 }) — ini adalah library dan pendekatan yang sama yang digunakan alat ini. Di Go: import gopkg.in/yaml.v3; json.Unmarshal(jsonBytes, &data); yaml.Marshal(data) — perhatikan bahwa Go YAML v3 menggunakan YAML 1.1 secara default, sehingga string bermasalah Norway akan dikutip otomatis.
Apakah data JSON saya dikirim ke server mana pun saat menggunakan alat ini?
Tidak. Semua konversi terjadi sepenuhnya di browser Anda menggunakan JavaScript. Data JSON Anda tidak pernah ditransmisikan melalui jaringan, tidak pernah disimpan di server mana pun, dan tidak pernah dicatat atau dianalisis. Ini membuat alat aman untuk digunakan dengan API key, kredensial database, file konfigurasi internal, manifest Kubernetes produksi, dan data sensitif lainnya. Alat ini tidak menggunakan cookie untuk data input Anda dan tidak ada analitik pihak ketiga yang akan menangkap paste Anda. Anda dapat memverifikasi ini dengan membuka tab Network browser Anda — Anda akan melihat nol permintaan yang dipicu saat menempel JSON.
Apakah ada batas ukuran file untuk input JSON?
Tidak ada batas ukuran file yang keras, tetapi input besar (di atas 200KB) secara otomatis beralih dari konversi langsung ke mode manual. Dalam mode manual, tombol Convert muncul dan konversi hanya berjalan saat Anda mengkliknya — ini mencegah thread utama browser terblokir selama 200-500ms pada setiap penekanan tombol. Untuk file JSON yang sangat besar (multi-megabyte), pertimbangkan menggunakan alat command-line seperti yq atau jq untuk performa lebih baik. Alat ini menangani payload dunia nyata yang khas dengan efisien seperti dump namespace Kubernetes penuh, spesifikasi OpenAPI besar, dan file Docker Compose multi-layanan.