Konversi JSON ke YAML: Panduan Migrasi Lengkap
JSON dan YAML merepresentasikan struktur data yang sama dengan sintaks yang berbeda. Konversi di antara keduanya cukup mudah dalam sebagian besar kasus, tetapi kasus khusus seputar tipe, string multiline, dan komentar memerlukan perhatian. Panduan ini mencakup pemetaan lengkap antara kedua format.
Pemetaan Sintaks
Objek / Mapping
JSON:
{
"database": {
"host": "localhost",
"port": 5432,
"name": "myapp"
}
}
YAML:
database:
host: localhost
port: 5432
name: myapp
Array / Sequence
JSON:
{
"servers": ["web1", "web2", "web3"]
}
YAML:
servers:
- web1
- web2
- web3
Struktur Bersarang
JSON:
{
"services": [
{
"name": "api",
"ports": [8080, 8443],
"env": {"NODE_ENV": "production"}
}
]
}
YAML:
services:
- name: api
ports:
- 8080
- 8443
env:
NODE_ENV: production
Konversi secara instan dengan konverter JSON ke YAML kami.
Kasus Khusus yang Perlu Diperhatikan
1. Komentar
YAML mendukung komentar; JSON tidak. Saat mengonversi YAML ke JSON, semua komentar akan hilang:
# Komentar ini akan hilang di JSON
database:
host: localhost # Ini juga hilang
2. String Multiline
YAML memiliki sintaks multiline yang powerful yang tidak dimiliki JSON:
description: |
This is a multi-line
string that preserves
line breaks.
Dalam JSON, ini menjadi:
{
"description": "This is a multi-line\nstring that preserves\nline breaks.\n"
}
3. Ambiguitas Tipe
YAML mendeteksi tipe secara otomatis, yang dapat menyebabkan masalah:
version: 1.0 # Float, bukan string "1.0"
port: 080 # Oktal 64, bukan string "080"
country: NO # Boolean false, bukan string "NO"
Dalam JSON, tipe bersifat eksplisit:
{
"version": "1.0",
"port": "080",
"country": "NO"
}
Saat mengonversi JSON ke YAML, tambahkan tanda kutip di sekitar nilai yang dapat disalahartikan.
4. Nilai Null
Keduanya mendukung null, tetapi sintaksnya berbeda:
value: null # Eksplisit
value: ~ # Singkatan YAML
value: # Nilai kosong = null
{ "value": null }
5. Karakter Khusus dalam Key
Key JSON dapat berisi karakter unicode apa pun. Key YAML dengan karakter khusus perlu tanda kutip:
"content-type": "application/json" # Tanda hubung perlu kutip
simple_key: value # Garis bawah tidak masalah
Konversi Melalui Command Line
Menggunakan yq (prosesor YAML)
# JSON ke YAML
yq -P input.json > output.yaml
# YAML ke JSON
yq -o=json input.yaml > output.json
Menggunakan Python
# JSON ke YAML
python3 -c "import json, yaml, sys; print(yaml.dump(json.load(sys.stdin), default_flow_style=False))" < input.json > output.yaml
# YAML ke JSON
python3 -c "import json, yaml, sys; print(json.dumps(yaml.safe_load(sys.stdin), indent=2))" < input.yaml > output.json
Menggunakan jq + yq bersamaan
# Proses JSON, output sebagai YAML
cat config.json | jq '.database' | yq -P
Kapan Menggunakan Setiap Format
| Kriteria | JSON | YAML |
|---|---|---|
| Editing oleh manusia | Lebih sulit (kurung, koma) | Lebih mudah (sintaks bersih) |
| Parsing oleh mesin | Lebih cepat | Lebih lambat |
| Komentar | Tidak didukung | Didukung |
| Pertukaran data | Standar (API) | Jarang |
| Konfigurasi | Bisa diterima | Lebih disukai |
| Keketatan | Ketat (bagus) | Fleksibel (berisiko) |
Gunakan JSON untuk: Komunikasi API, penyimpanan data, konfigurasi yang dihasilkan mesin, lingkungan browser.
Gunakan YAML untuk: Konfigurasi yang diedit manusia, Docker Compose, Kubernetes, pipeline CI/CD, Ansible.
Untuk perbandingan yang lebih mendalam, lihat artikel YAML vs JSON kami.
FAQ
Apakah YAML merupakan superset dari JSON?
Ya, sejak YAML 1.2 (2009), setiap dokumen JSON yang valid juga merupakan YAML yang valid. Parser YAML dapat mem-parse JSON secara langsung. Namun, sebaliknya tidak berlaku — fitur YAML seperti komentar, anchor, dan string multiline tidak memiliki padanan di JSON.
Mana yang lebih cepat di-parse, JSON atau YAML?
JSON secara signifikan lebih cepat di-parse di hampir semua bahasa pemrograman. Parser JSON lebih sederhana karena formatnya memiliki lebih sedikit sintaks yang harus ditangani. Untuk file konfigurasi yang dimuat sekali saat startup, perbedaannya dapat diabaikan. Untuk pemrosesan data berthroughput tinggi, JSON adalah pilihan yang jelas.
Sumber Daya Terkait
- Konverter JSON ke YAML — Konversi antar format secara instan
- YAML vs JSON — Perbandingan format secara detail
- Tutorial Sintaks YAML — Pelajari YAML dari awal