Aynı veri için üç biçim
JSON, API'lerin gönderdiği ve JavaScript'in okuduğu biçimdir. YAML, insanların Docker Compose, Kubernetes, GitHub Actions ya da Ansible yapılandırma dosyalarında elle yazdığı biçimdir. XML ise beslemelerde, e-faturalarda, Office dosyalarında ve eski web servislerinde hâlâ her yerde. Üçü de aynı tür veriyi anlatır: nesneler, listeler, metin, sayılar ve true ya da false. Bu yüzden birbirine çevrilebilirler.
Bazı ayrıntılar her dönüşümde korunamaz. JSON'da yorum olmadığı için YAML ve XML yorumları atılır. XML'in kendine ait liste ve sayı tipi yoktur, bu yüzden tekrar eden öğeler diziye dönüşür, sayılar da ancak bu seçeneği açarsan tanınır. Aşağıdaki her yön bu durumlarda ne olduğunu anlatır.
Kestirme değil, gerçek bir YAML ayrıştırıcı
YAML'ın basit dönüştürücülerin yanlış yaptığı pek çok kuralı var: | ve > ile blok metin, tırnaklı ve tırnaksız metin, anchor (&ad) ve alias (*ad), merge key (<<) ve her biri üç tireden oluşan bir satırla başlayan, aynı dosyadaki birden çok belge. Bu araç YAML 1.2 spesifikasyonuna uyan eksiksiz bir YAML ayrıştırıcı kullanır ve kötü niyetli bir dosya tarayıcını kilitlemesin diye alias açılımını sınırlar.