← Kembali ke Blog

JSON vs YAML: Perbandingan Format Lengkap

Perbandingan mendalam antara JSON dan YAML. Pelajari kapan harus menggunakan setiap format, metode konversi, dan praktik terbaik untuk file konfigurasi.

Big JSON Team9 menit bacaperbandingan
B

Big JSON Team

Technical Writer

Expert in JSON data manipulation, API development, and web technologies. Passionate about creating tools that make developers' lives easier.

9 min read

Ikhtisar JSON vs YAML

Keduanya adalah format serialisasi data dengan kekuatan yang berbeda.

Perbandingan Cepat

| Fitur | JSON | YAML |

|---------|------|-----|

| Sintaksis | Ringan | Lebih Ringkas |

| Keterbacaan | Baik | Sangat Baik |

| Komentar | Tidak | Ya |

| Penguraian | Lebih Cepat | Lebih Lambat |

| Ukuran File | Lebih Besar | Lebih Kecil |

Perbandingan Sintaksis

JSON

{

"name": "John",

"age": 30,

"active": true,

"tags": ["user", "admin"]

}

YAML

name: John

age: 30

active: true

tags:

- user

- admin

Kapan Menggunakan JSON

  • Web API - Standar untuk REST
  • Aplikasi JavaScript - Dukungan native
  • Butuh penguraian cepat
  • Data yang dihasilkan mesin
  • Butuh validasi ketat
  • Kapan Menggunakan YAML

  • File konfigurasi - Lebih mudah dibaca
  • DevOps - Docker, Kubernetes
  • Butuh komentar
  • File yang dikelola manusia
  • Pipeline CI/CD
  • Konversi

    YAML ke JSON (Python)

    import json
    

    import yaml

    with open('config.yaml') as f:

    data = yaml.safe_load(f)

    with open('config.json', 'w') as f:

    json.dump(data, f, indent=2)

    JSON ke YAML (Python)

    import json
    

    import yaml

    with open('config.json') as f:

    data = json.load(f)

    with open('config.yaml', 'w') as f:

    yaml.dump(data, f)

    Jebakan Umum

    Spasi Kosong YAML

    # Salah - indentasi tidak konsisten
    

    server:

    port: 8080

    host: localhost # Error!

    # Benar

    server:

    port: 8080

    host: localhost

    Paksaan Tipe YAML (Type Coercion)

    version: 1.0      # Menjadi Float
    

    country: NO # Menjadi Boolean false!

    # Paksa menjadi string

    version: "1.0"

    country: "NO"

    Dukungan Alat Kabel

    | Alat | JSON | YAML |

    |------|------|------|

    | Browser | Native | Pihak Ketiga |

    | jq | Ya | Tidak (gunakan yq) |

    | VS Code | Sangat Baik | Sangat Baik |

    Fitur Lanjutan

    Jangkar YAML (Anchors)

    defaults: &defaults
    

    timeout: 30

    retries: 3

    production:

    <<: defaults

    url: https://api.example.com

    development:

    <<: defaults

    url: http://localhost:3000

    String Multi-baris

    description: |
    

    Ini adalah string

    multi-baris di YAML

    yang mempertahankan baris baru

    single_line: >

    Ini juga multi-baris

    tetapi menjadi satu baris

    Panduan Keputusan

    Pilih JSON untuk:
    • API dan pertukaran data
    • Aplikasi JavaScript
    • Aplikasi yang mementingkan performa

    Pilih YAML untuk:
    • File konfigurasi
    • Keterbacaan manusia
    • Alur kerja DevOps

    Kesimpulan

    Keduanya memiliki tempatnya masing-masing. Banyak proyek menggunakan JSON untuk data runtime dan YAML untuk konfigurasi!

    Share:

    Artikel Terkait

    Read in English