alltools.one
Data
2025-06-21
7 min
alltools.one Team
JSONYAMLConversionConfigurationDevOps

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

KriteriaJSONYAML
Editing oleh manusiaLebih sulit (kurung, koma)Lebih mudah (sintaks bersih)
Parsing oleh mesinLebih cepatLebih lambat
KomentarTidak didukungDidukung
Pertukaran dataStandar (API)Jarang
KonfigurasiBisa diterimaLebih disukai
KeketatanKetat (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

Published on 2025-06-21
JSON to YAML Conversion: A Complete Migration Guide | alltools.one