Skip to content

Konverter YAML ke JSON

Tempel YAML, dapatkan JSON seketika. Konversi langsung di browser. Manifest K8s, spesifikasi OpenAPI, nilai Helm didukung. 100% privat, tanpa upload.

Tanpa Pelacakan Berjalan di Browser Gratis
Opsi · 2 spasi
Indentasi
0 karakter
JSON Output
0 baris
Ditinjau untuk kepatuhan spesifikasi YAML 1.2, ekspansi anchor/alias, dan kebenaran penanganan multi-dokumen — Go Tools Engineering Team · May 4, 2026

Apa Itu JSON?

JSON (JavaScript Object Notation) adalah format pertukaran data berbasis teks yang ringan, distandarkan sebagai RFC 8259 dan ECMA-404. Ia mendukung enam tipe data — string, angka, boolean, null, array, dan objek — dengan sintaks yang ketat dan minimal yang hampir setiap bahasa pemrograman, API, dan toolchain dapat mem-parsing secara native. Meskipun YAML adalah format yang lebih disukai untuk file konfigurasi yang ditulis manusia (manifest Kubernetes, GitHub Actions, playbook Ansible, nilai Helm), JSON adalah format yang dapat dibaca mesin secara universal untuk API, skrip otomasi, dan pemrosesan data terprogram.

Mengonversi YAML ke JSON karena itu merupakan salah satu tugas paling umum dalam DevOps dan pengembangan backend — Anda memiliki file konfigurasi YAML tetapi membutuhkan JSON untuk dimasukkan ke REST API, di-query dengan jq, atau diproses dengan tooling JavaScript.

Alat ini memiliki empat perbedaan penting dibandingkan konverter online pada umumnya:

**1. Penanganan YAML Multi-Dokumen.** YAML mendukung beberapa dokumen dalam satu stream yang dipisahkan oleh --- (penanda awal dokumen). Banyak file YAML dunia nyata — termasuk beberapa manifest Kubernetes dan playbook Ansible — berisi beberapa dokumen. Alat ini menggunakan parseAllDocuments dari library eemeli/yaml dengan opsi { version: '1.2', merge: true } dan mengembalikan dokumen pertama sebagai JSON, mengkomunikasikan dengan jelas apa yang diambil. Jika Anda membutuhkan semua dokumen, pisahkan pada --- dan konversi masing-masing secara individual.

**2. Ekspansi Anchor dan Alias.** Anchor YAML (&name) dan alias (*name) memungkinkan penggunaan kembali blok data — fitur YAML yang kuat tanpa padanan JSON. Alat ini sepenuhnya memperluas semua anchor dan alias (termasuk merge key: <<: *anchor) sehingga output JSON berisi data lengkap yang berdiri sendiri tanpa referensi apa pun. Ini selalu merupakan transformasi yang benar karena JSON tidak memiliki sintaks referensi. Ekspansi ditangani dengan aman oleh library eemeli/yaml, yang menyertakan perlindungan terhadap referensi melingkar. Pelajari cara ini dibandingkan dengan arah sebaliknya di Konverter JSON ke YAML.

**3. Kehilangan Komentar — Transparansi Edukatif.** YAML mendukung komentar #, yang sering digunakan dalam manifest Kubernetes, nilai Helm, dan playbook Ansible untuk mendokumentasikan tujuan. JSON tidak memiliki sintaks komentar, sehingga komentar dihapus secara permanen selama konversi. Ini bukan bug — ini adalah perbedaan format fundamental. Alat ini membuat ini eksplisit sehingga Anda tahu apa yang diharapkan. Jika Anda perlu mempertahankan anotasi, enkodekan sebagai field JSON (kunci _comment atau objek metadata khusus) sebelum mengonversi, atau simpan YAML sebagai sumber otoritatif. Lihat pembahasaan mendalam tentang perbedaan YAML-JSON kami untuk informasi lebih lanjut tentang tradeoff format.

**4. Privasi 100% Berbasis Browser.** Data YAML Anda — yang sering berisi secret Kubernetes, kredensial database, nilai Helm dengan password, dan konfigurasi layanan internal — tidak pernah meninggalkan browser Anda. Tidak ada data yang dikirim ke server mana pun. Anda dapat memverifikasi ini di tab Network browser Anda. Setelah mengonversi ke JSON, Anda dapat memvalidasi dan memformat hasilnya dengan JSON Formatter kami sebelum menggunakannya lebih lanjut.

Kekayaan YAML (komentar, anchor, dukungan multi-dokumen, block scalar) menjadikannya sangat baik untuk file konfigurasi yang dibuat manusia di mana keterbacaan dan dokumentasi penting. Keketatan dan universalitas JSON menjadikannya pilihan yang lebih baik ketika mesin adalah konsumen utama. Konverter ini menjembatani dua dunia: simpan konfigurasi Anda dalam YAML untuk kemudahan pemeliharaan manusia, konversi ke JSON ketika Anda membutuhkan pertukaran yang dapat dibaca mesin.

// Convert YAML to JSON in Node.js using the eemeli/yaml library
import { parseAllDocuments } from 'yaml';

const yamlString = `apiVersion: apps/v1
kind: Deployment`;

// parseAllDocuments handles multi-document YAML (--- separator)
// version: '1.2' ensures yes/no are strings, not booleans
// merge: true expands anchor/alias merge keys (<<: *anchor)
const docs = parseAllDocuments(yamlString, { version: '1.2', merge: true });

// Take the first document (skip additional --- blocks)
const json = JSON.stringify(docs[0].toJSON(), null, 2);

console.log(json);
// {
//   "apiVersion": "apps/v1",
//   "kind": "Deployment"
// }

Fitur Utama

Konversi Langsung

Output JSON diperbarui seketika saat Anda mengetik atau menempel YAML — tidak perlu tombol Convert. Input besar (>200KB) secara otomatis beralih ke mode manual agar browser tetap responsif.

Indentasi 2 atau 4 Spasi

Beralih antara indentasi 2 spasi dan 4 spasi untuk output JSON. 2 spasi adalah standar untuk sebagian besar tooling dan API; 4 spasi sesuai dengan beberapa panduan gaya dan default editor.

Dukungan Multi-Dokumen

Menangani stream YAML dengan beberapa dokumen yang dipisahkan oleh ---. Dokumen pertama dikonversi ke JSON dan dikembalikan. Berguna untuk file multi-resource Kubernetes dan playbook Ansible.

Ekspansi Anchor dan Alias

Sepenuhnya memperluas anchor YAML (&name) dan alias (*name), termasuk merge key (<<: *anchor). Output JSON berisi data lengkap yang telah di-dereference tanpa referensi — perilaku yang benar karena JSON tidak memiliki padanannya.

Privasi 100% Berbasis Browser

Semua konversi berjalan secara lokal di browser Anda menggunakan JavaScript. Data YAML Anda — termasuk secret, kredensial, dan konfigurasi produksi — tidak pernah dikirim ke server mana pun, tidak pernah dicatat, dan tidak pernah disimpan.

Menangani K8s, Compose, Helm, dan OpenAPI

Dioptimalkan untuk kasus penggunaan DevOps dunia nyata: manifest Kubernetes, stack Docker Compose, nilai chart Helm, workflow GitHub Actions, spesifikasi OpenAPI, dan playbook Ansible — dengan contoh untuk setiap kasus.

Contoh

Manifest Kubernetes

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 YAML ke JSON — berguna untuk query dengan jq, mengirim ke Kubernetes API, atau menggunakan dalam pipeline Terraform dan CI/CD

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 Docker Compose YAML ke JSON untuk manipulasi terprogram, digunakan dalam skrip otomasi, atau diproses dengan tooling JavaScript

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

Parsing workflow GitHub Actions YAML ke JSON untuk query field tertentu, validasi struktur, atau integrasi dengan API yang mengonsumsi JSON

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 YAML ke JSON untuk digunakan dengan generator kode klien, alat pengujian API, atau inspeksi skema secara terprogram

Helm values.yaml

replicaCount: 3
image:
  repository: my-app
  tag: 1.0.0
  pullPolicy: IfNotPresent
service:
  type: ClusterIP
  port: 80
ingress:
  enabled: true
  className: nginx
  hosts:
    - host: my-app.example.com
      paths:
        - path: /
          pathType: Prefix
resources:
  requests:
    memory: 64Mi
    cpu: 250m
  limits:
    memory: 128Mi
    cpu: 500m
autoscaling:
  enabled: false
  minReplicas: 1
  maxReplicas: 10
  targetCPUUtilizationPercentage: 80

Konversi values.yaml chart Helm ke JSON untuk analisis, pembuatan laporan, atau digunakan dalam tooling yang mengharapkan konfigurasi JSON

Ansible Playbook

- name: Configure web servers
  hosts: webservers
  become: true
  vars:
    http_port: 80
    max_clients: 200
  tasks:
    - name: Ensure nginx is installed
      ansible.builtin.package:
        name: nginx
        state: present
    - name: Start nginx service
      ansible.builtin.service:
        name: nginx
        state: started
        enabled: true
    - name: Copy nginx config
      ansible.builtin.template:
        src: nginx.conf.j2
        dest: /etc/nginx/nginx.conf
        owner: root
        group: root
        mode: '0644'
      notify:
        - Restart nginx
  handlers:
    - name: Restart nginx
      ansible.builtin.service:
        name: nginx
        state: restarted

Parsing playbook Ansible YAML ke JSON untuk memeriksa struktur task, mengaudit konfigurasi, atau mengintegrasikan dengan pipeline pelaporan

Cara Menggunakan

  1. 1

    Tempel YAML Anda

    Masukkan atau tempel data YAML ke kolom input di atas. Anda juga dapat klik 'Muat contoh' untuk mencoba sampel seperti Kubernetes Deployment, file Docker Compose, atau Helm values.yaml.

  2. 2

    Lihat Output JSON Langsung

    JSON muncul seketika di panel output. Sesuaikan Options (indentasi 2 atau 4 spasi) agar sesuai dengan kebutuhan alat target Anda.

  3. 3

    Salin atau Unduh

    Klik Copy untuk mengambil JSON ke clipboard, atau Download untuk menyimpannya sebagai file .json yang siap untuk jq, panggilan API, atau tooling hilir lainnya.

Kesalahan YAML Umum

Indentasi Tab

Spesifikasi YAML melarang karakter tab untuk indentasi — hanya spasi yang diizinkan. Jika YAML Anda ditulis atau di-copy-paste dari editor yang menggunakan tab, parser akan melempar error. Ganti semua indentasi tab dengan spasi (2 atau 4 spasi per level).

✗ Salah
services:
	web:
		image: nginx:1.25-alpine
✓ Benar
services:
  web:
    image: nginx:1.25-alpine

Indentasi Tidak Konsisten

YAML menggunakan indentasi yang konsisten untuk mendefinisikan nesting. Mencampur jumlah spasi yang berbeda dalam blok yang sama (misalnya, 2 spasi di satu level dan 3 di level lain) menyebabkan error parse. Setiap level harus diindentasi dengan jumlah spasi yang sama di seluruh dokumen.

✗ Salah
metadata:
  name: my-app
   namespace: production
✓ Benar
metadata:
  name: my-app
  namespace: production

Karakter Khusus Tanpa Kutip

Karakter seperti :, #, &, *, {, }, [, ], |, >, !, dan @ memiliki arti khusus dalam YAML. Menggunakannya tanpa kutip dalam nilai dapat menyebabkan error parse atau perilaku tak terduga. Kutip nilai yang mengandung karakter-karakter ini dengan tanda kutip tunggal atau ganda.

✗ Salah
url: http://example.com:8080/api
tag: #latest
✓ Benar
url: 'http://example.com:8080/api'
tag: '#latest'

Anchor Melingkar

YAML secara teknis mengizinkan anchor yang mereferensikan dirinya sendiri (referensi melingkar), meskipun ini jarang terjadi dalam praktik. Anchor melingkar menyebabkan parser masuk ke loop ekspansi tak terbatas. Library eemeli/yaml mendeteksi dan melempar error untuk anchor melingkar daripada hang.

✗ Salah
# Circular anchor (rare but possible)
base: &base
  parent: *base
✓ Benar
# Use explicit fields instead of circular references
base:
  parent: null

Kebingungan Multi-Dokumen

File YAML dengan beberapa pemisah --- berisi beberapa dokumen. Alat ini hanya mengembalikan dokumen pertama sebagai JSON. Jika Anda mengharapkan data dari dokumen yang lebih belakangan (setelah --- kedua atau ketiga), itu tidak akan muncul di output. Pisahkan YAML Anda pada --- dan konversi setiap bagian secara terpisah jika Anda membutuhkan semua dokumen.

✗ Salah
# Only the first document is converted
apiVersion: v1
kind: ConfigMap
---
apiVersion: v1
kind: Secret
✓ Benar
# Convert each document separately
apiVersion: v1
kind: ConfigMap

Kehilangan Komentar

YAML mendukung komentar # tetapi JSON tidak. Semua komentar YAML hilang secara permanen selama konversi — ini adalah perbedaan format fundamental, bukan keterbatasan alat. Jika Anda perlu mempertahankan anotasi dalam JSON, enkodekan sebagai field khusus seperti kunci _comment atau objek metadata.

✗ Salah
# This comment will be lost
replicas: 3 # scale this up for production
✓ Benar
replicas: 3
_comment: scale this up for production

Kasus Penggunaan Umum

Analisis Manifest Kubernetes
Konversi manifest YAML Kubernetes ke JSON untuk query dengan jq, pengiriman ke Kubernetes REST API, pemrosesan dalam sumber data Terraform, atau dimasukkan ke pipeline CI/CD yang mengharapkan JSON.
Docker Compose ke Tooling JavaScript
Parsing Docker Compose YAML ke JSON untuk mengekstrak definisi layanan, nama image, pemetaan port, dan variabel environment untuk digunakan dalam skrip otomasi, grafik dependensi, atau tooling Node.js.
Integrasi API GitHub Actions
Konversi workflow YAML GitHub Actions ke JSON untuk validasi struktur secara terprogram, ekstraksi definisi job dan step, atau integrasi dengan API CI/CD yang menerima spesifikasi workflow JSON.
OpenAPI ke Pembuatan Kode Klien
Banyak generator kode (openapi-generator, swagger-codegen, oazapfts) menerima spesifikasi OpenAPI dalam format apa pun. Konversi spesifikasi YAML Anda ke JSON ketika alat secara khusus memerlukan input JSON atau ketika Anda perlu memeriksanya dengan validator JSON Schema.
Analisis Nilai Helm
Konversi values.yaml chart Helm ke JSON untuk menghasilkan laporan, membandingkan nilai di berbagai lingkungan, dimasukkan ke alat penegakan kebijakan, atau diproses dengan otomasi yang mengharapkan konfigurasi JSON.
Migrasi Konfigurasi ke Alat Berbasis JSON
Migrasikan konfigurasi aplikasi dari YAML (umum dalam alat infrastruktur) ke JSON untuk digunakan di lingkungan JavaScript, REST API, AWS AppConfig, Azure App Configuration, atau sistem mana pun yang menyimpan konfigurasi sebagai JSON.

Detail Teknis

Spesifikasi YAML 1.2 via parseAllDocuments dengan merge:true
YAML diparsing menggunakan library eemeli/yaml (v2.8+, aman dari CVE) via parseAllDocuments dengan { version: '1.2', merge: true }. Skema YAML 1.2 memastikan string biasa seperti yes dan no diperlakukan sebagai string (bukan boolean), sesuai dengan spesifikasi YAML saat ini. Opsi merge: true sepenuhnya memperluas merge key anchor/alias (<<: *anchor) sehingga output JSON berisi data lengkap yang telah di-dereference. YAML multi-dokumen (dipisahkan oleh ---) mengembalikan dokumen pertama.
Ekspansi Anchor dan Alias via Library
Library eemeli/yaml menangani ekspansi anchor (&name) dan alias (*name) dengan aman, termasuk deteksi referensi melingkar. Semua blok data yang di-alias — termasuk ekspansi merge key — sepenuhnya di-inline di output JSON. Ini adalah transformasi yang benar karena JSON tidak memiliki konsep referensi atau anchor. Ekspansi aman dari library mencegah loop tak terbatas dari YAML yang tidak valid.
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

Gunakan Sintaks yang Kompatibel dengan YAML 1.2 untuk Konversi yang Bersih
Tulis YAML Anda menggunakan konvensi YAML 1.2 — kutip nilai string yes, no, on, off, y, dan n secara eksplisit (misalnya, enabled: 'yes') untuk menghindari ambiguitas. Alat ini mem-parsing dengan skema YAML 1.2 (sehingga ini adalah string), tetapi alat lama dalam pipeline Anda mungkin menggunakan YAML 1.1 (di mana mereka menjadi boolean). Pengutipan eksplisit dalam sumber YAML adalah praktik paling aman di semua parser.
Kutip Angka Besar dalam YAML untuk Menjaga Presisi
JavaScript tidak dapat merepresentasikan bilangan bulat yang lebih besar dari 2^53 - 1 (9007199254740991) secara tepat. Field Kubernetes seperti resourceVersion dan uid adalah int64 di server dan dapat melebihi batas ini. Dalam sumber YAML Anda, kutip nilai-nilai ini (resourceVersion: '9007199254740993') sehingga parser memperlakukannya sebagai string, yang kemudian dipertahankan secara tepat di output JSON sebagai nilai string.
Validasi Output JSON Sebelum Digunakan di API
Setelah mengonversi YAML ke JSON, validasikan hasilnya sebelum mengirimkannya ke API, menyimpannya, atau memprosesnya secara terprogram. Gunakan JSON Formatter kami untuk mengkonfirmasi struktur sudah benar. Ini sangat penting untuk panggilan Kubernetes API, spesifikasi OpenAPI, dan payload yang divalidasi JSON Schema mana pun, di mana error struktural menyebabkan penolakan yang membingungkan di lapisan API daripada di langkah konversi.
Pisahkan YAML Multi-Dokumen Sebelum Mengonversi
Jika file YAML Anda berisi beberapa dokumen yang dipisahkan oleh --- dan Anda membutuhkan semuanya sebagai JSON, pisahkan file pada --- terlebih dahulu dan konversi setiap dokumen secara individual. Alat ini hanya mengambil dokumen pertama. Pendekatan sederhana: pisahkan pada '\n---\n' di editor Anda atau dengan awk, kemudian tempel setiap bagian secara terpisah.
Gunakan jq untuk Pemrosesan JSON Hilir
Setelah Anda mendapatkan JSON dari YAML, jq adalah cara tercepat untuk query dan mentransformasikannya dari command line. Gabungkan alat ini dengan jq: konversi YAML Anda secara online, tempel JSON, kemudian gunakan jq '.spec.replicas' atau jq '.services | keys' untuk mengekstrak persis apa yang Anda butuhkan. Untuk pemrosesan batch banyak file, gunakan yq CLI dengan flag -o json secara langsung.

Pertanyaan yang Sering Diajukan

Bagaimana cara mengonversi YAML ke JSON secara online?
Tempel YAML Anda ke kolom input di atas. Alat ini mengonversinya ke JSON seketika di browser Anda — tanpa perlu klik tombol. Anda dapat mengatur indentasi output (2 atau 4 spasi) dari panel Options. Setelah JSON muncul di area output, klik Copy untuk menyalinnya ke clipboard atau Download untuk menyimpannya sebagai file .json. Semua proses berjalan secara lokal — data Anda tidak pernah meninggalkan perangkat Anda.
Bagaimana alat ini menangani YAML multi-dokumen (pemisah ---)?
YAML mendukung beberapa dokumen dalam satu stream, dipisahkan oleh --- (penanda awal dokumen). Ketika Anda menempel string YAML multi-dokumen, alat ini menggunakan parseAllDocuments dari library eemeli/yaml dan mengembalikan dokumen pertama sebagai JSON. Dokumen tambahan setelah yang pertama diabaikan secara diam-diam. Jika Anda perlu memproses semua dokumen, pisahkan YAML Anda pada --- dan konversi setiap bagian secara individual. Alat menampilkan JSON dokumen pertama sehingga Anda dapat memverifikasi hasilnya.
Bagaimana anchor dan alias YAML (&anchor dan *alias) ditangani?
Anchor YAML (&name) mendefinisikan blok yang dapat digunakan kembali, dan alias (*name) mereferensikannya. Alat ini sepenuhnya memperluas semua anchor dan alias selama parsing, sehingga output JSON berisi data lengkap yang telah di-dereference. Misalnya, jika anchor YAML mendefinisikan satu set batas resource dan beberapa layanan mengaliasnya dengan merge key (<<: *anchor), output JSON menampilkan setiap field yang secara eksplisit di-inline untuk setiap layanan. Ini adalah perilaku yang benar untuk JSON, yang tidak memiliki konsep referensi. Library eemeli/yaml menangani ekspansi anchor/alias dengan aman, termasuk deteksi referensi melingkar.
Apakah komentar YAML dipertahankan di output JSON?
Tidak. JSON tidak mendukung komentar dalam bentuk apa pun — tidak ada sintaks #, //, atau /* */. Ketika Anda mengonversi YAML ke JSON, semua komentar hilang secara permanen. Ini adalah perbedaan format fundamental, bukan keterbatasan alat ini. Jika Anda perlu mempertahankan anotasi, pertimbangkan mengkodekannya sebagai field JSON khusus (seperti kunci _comment) sebelum mengonversi, atau simpan sumber YAML sebagai versi otoritatif dengan komentar. Alat ini dengan jelas mencerminkan data sebagai JSON tanpa perkiraan komentar, yang merupakan perilaku yang benar dan standar.
Bagaimana cara menggunakan alat ini dengan manifest Kubernetes?
Tempel manifest YAML Kubernetes Anda (dari file .yaml, output kubectl get -o yaml, atau template Helm) ke kolom input. Output JSON kemudian dapat di-query dengan jq, dikirim langsung ke Kubernetes REST API, digunakan dalam sumber data Terraform, atau diproses oleh tooling apa pun yang mengharapkan JSON. Workflow umum adalah mengonversi manifest YAML ke JSON untuk mengekstrak field tertentu — misalnya: jq '.spec.replicas' pada output JSON untuk memverifikasi jumlah replika di seluruh deployment. Contoh K8s Deployment di atas menampilkan manifest lengkap yang bisa Anda muat dan modifikasi.
Bagaimana alat ini membantu dengan file Docker Compose?
File Docker Compose adalah YAML berdasarkan konvensi. Mengonversinya ke JSON memungkinkan Anda memproses definisi layanan dengan tooling JavaScript, skrip jq, atau sistem mana pun yang membaca JSON. Kasus penggunaan umum termasuk mengekstrak semua nama image untuk membuat daftar dependensi, menghasilkan laporan dari file compose, atau memasukkan konfigurasi Compose ke alat orkestrasi CI/CD yang menerima JSON. Tempel compose.yaml Anda ke input dan output JSON langsung siap untuk pemrosesan hilir.
Apa perbedaan antara YAML 1.1 dan YAML 1.2, dan mana yang digunakan alat ini?
YAML 1.1 (spesifikasi lama, masih digunakan oleh PyYAML, Ansible, Ruby Psych, dan banyak alat Kubernetes) memperlakukan string biasa seperti yes, no, on, off, y, dan n sebagai nilai boolean true/false. Ini menyebabkan masalah Norway yang terkenal di mana kode negara ISO 'NO' diparsing sebagai false. YAML 1.2 (spesifikasi saat ini, dirilis 2009) memperbaiki ini: semua string biasa adalah string, dan hanya true/false yang boolean. Alat ini menggunakan skema YAML 1.2 untuk parsing, artinya yes dan no dalam input YAML Anda dipertahankan sebagai nilai string 'yes' dan 'no' di output JSON — bukan boolean true dan false. Ini adalah perilaku modern yang benar. Jika YAML Anda awalnya dibuat untuk parser YAML 1.1 dan mengandalkan yes/no sebagai boolean, perhatikan bahwa output JSON akan memperlakukannya sebagai string.
Mengapa YAML melarang indentasi tab?
Spesifikasi YAML secara eksplisit melarang karakter tab (\t) untuk indentasi — hanya spasi yang diizinkan. Ini adalah keputusan desain yang disengaja untuk menghindari ambiguitas yang disebabkan oleh lebar tab yang tidak konsisten di berbagai editor. Jika YAML Anda menggunakan tab untuk indentasi (umum terjadi saat menyalin dari editor teks yang mengonversi spasi ke tab secara otomatis), parser YAML akan melempar error parse. Solusinya adalah mengganti semua indentasi tab dengan spasi. Sebagian besar editor kode memiliki pengaturan untuk mengonversi tab ke spasi (misalnya, 'Expand Tabs' di Vim, 'Insert Spaces' di VS Code). Jika Anda menempel YAML dan melihat error parse yang menyebut 'tab' atau 'indentation', hampir dipastikan ini penyebabnya.
Bisakah angka besar kehilangan presisi saat mengonversi YAML ke JSON?
Ya. Ini adalah keterbatasan JavaScript fundamental yang mempengaruhi semua alat berbasis browser. Float double-precision IEEE 754 JavaScript hanya dapat merepresentasikan bilangan bulat secara tepat hingga 2^53 - 1 (9007199254740991). Angka YAML yang lebih besar dari ini — seperti field int64 Kubernetes seperti resourceVersion — akan dibulatkan secara diam-diam ketika parser YAML menyerahkannya ke tipe number JavaScript. Misalnya, nilai YAML 9007199254740993 menjadi 9007199254740992 di output JSON. Solusi aman adalah mengutip angka besar dalam sumber YAML Anda (resourceVersion: '9007199254740993') sehingga parser memperlakukannya sebagai string, yang kemudian dipertahankan secara tepat dalam JSON sebagai nilai string.
Bagaimana cara mengonversi YAML ke JSON di command line?
Pendekatan paling populer menggunakan yq (versi Mike Farah) dan jq. Install yq: brew install yq di macOS atau unduh dari github.com/mikefarah/yq/releases untuk Linux. Kemudian jalankan: yq -o json input.yaml untuk mengonversi file YAML ke JSON, atau cat input.yaml | yq -o json - untuk pipe dari stdin. Untuk output pretty-printed: yq -o json input.yaml | jq . — ini meng-pipe JSON melalui jq untuk formatting yang konsisten. Untuk one-liner Python: python3 -c "import sys, json, yaml; print(json.dumps(yaml.safe_load(sys.stdin), indent=2))" < input.yaml. Untuk YAML multi-dokumen dengan yq: yq -o json '.[0]' input.yaml untuk mengekstrak hanya dokumen pertama sebagai JSON.
Apakah data YAML saya dikirim ke server mana pun saat menggunakan alat ini?
Tidak. Semua konversi terjadi sepenuhnya di browser Anda menggunakan JavaScript. Data YAML 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 secret Kubernetes, kredensial database, nilai Helm internal, API key dalam file konfigurasi, dan konfigurasi infrastruktur sensitif lainnya. Anda dapat memverifikasi ini dengan membuka tab Network browser Anda — Anda akan melihat nol permintaan yang dipicu saat menempel YAML.
Apakah ada batas ukuran file untuk input YAML?
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 pada setiap penekanan tombol. Untuk file YAML yang sangat besar (multi-megabyte), pertimbangkan menggunakan alat command-line seperti yq untuk performa lebih baik. Alat ini menangani payload dunia nyata yang khas dengan efisien seperti ekspor namespace Kubernetes penuh, spesifikasi OpenAPI besar, dan file nilai chart Helm multi-layanan.