Konverter YAML ke JSON
Tempel YAML, dapatkan JSON seketika. Konversi langsung di browser. Manifest K8s, spesifikasi OpenAPI, nilai Helm didukung. 100% privat, tanpa upload.
Opsi · 2 spasi
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
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
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
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).
services: web: image: nginx:1.25-alpine
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.
metadata: name: my-app namespace: production
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.
url: http://example.com:8080/api tag: #latest
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.
# Circular anchor (rare but possible) base: &base parent: *base
# 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.
# Only the first document is converted apiVersion: v1 kind: ConfigMap --- apiVersion: v1 kind: Secret
# 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.
# This comment will be lost replicas: 3 # scale this up for production
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?
Bagaimana alat ini menangani YAML multi-dokumen (pemisah ---)?
Bagaimana anchor dan alias YAML (&anchor dan *alias) ditangani?
Apakah komentar YAML dipertahankan di output JSON?
Bagaimana cara menggunakan alat ini dengan manifest Kubernetes?
Bagaimana alat ini membantu dengan file Docker Compose?
Apa perbedaan antara YAML 1.1 dan YAML 1.2, dan mana yang digunakan alat ini?
Mengapa YAML melarang indentasi tab?
Bisakah angka besar kehilangan presisi saat mengonversi YAML ke JSON?
Bagaimana cara mengonversi YAML ke JSON di command line?
Apakah data YAML saya dikirim ke server mana pun saat menggunakan alat ini?
Apakah ada batas ukuran file untuk input YAML?
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.
Konverter JSON ke YAML
Encoding & Pemformatan
Tempel JSON, dapatkan YAML seketika. Konversi langsung di browser. Siap untuk K8s/Compose, indentasi 2/4 spasi, penanganan kutipan otomatis. 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 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.