Bu Araç Nedir?
YAML, çoğu modern yapılandırma dosyası için tercih edilen formattır — Kubernetes manifestleri, Docker Compose, GitHub Actions ve GitLab CI pipeline'ları, Ansible playbook'ları — çünkü dosyaları elle düzenleyen insanlar için JSON'dan daha okunaklıdır: çoğu anahtarın etrafına tırnak işareti koymaya gerek yoktur, hatalı sondaki virgüller sorun olmaz ve yorumlar desteklenir. JSON ise çoğu API'nin ve programlama dilinin doğal olarak ürettiği ve tükettiği formattır.
Bu araç, YAML spesifikasyonunun yaygın olarak kullanılan bir JavaScript uygulaması olan js-yaml kullanarak ikisi arasında köprü kurar, böylece ayrıştırma ve üretme işlemleri `kubectl` gibi YAML'a duyarlı bir aracın veya bir CI çalıştırıcısının uygulayacağı aynı kuralları izler.
JSON'u YAML'a dönüştürmek, nesneleri girintili anahtar: değer bloklarına ve dizileri `-` ön ekli liste öğelerine çevirir. YAML'ı JSON'a dönüştürmek bunun tersini yapar ve ayrıca YAML'a özgü tür kısayollarını (tırnaksız `true`, `null` veya sayılar gibi) uygun JSON türlerine çözümler.
Neden Kullanmalısınız?
- Çift yönlü — aynı ekrandan JSON'u YAML'a veya YAML'ı JSON'a dönüştürün.
- js-yaml aracılığıyla standartlara dayalı ayrıştırma ve üretim, böylece çıktı gerçek YAML araçlarının (Kubernetes, CI sistemleri, Ansible) beklediğiyle eşleşir.
- Herhangi bir derinlikte iç içe geçmiş nesneleri ve dizileri işler, YAML'ın girinti tabanlı yapısı ile JSON'un süslü ve köşeli parantezleri arasında dönüştürür.
- YAML tür kısayollarını doğru şekilde yorumlar — tırnaksız true/false, null ve sayısal değerler string yerine uygun JSON türlerine dönüşür.
- Panoya kopyalayın veya .json ya da .yaml dosyası olarak indirin.
- %100 istemci tarafında — yapıştırdığınız hiçbir şey herhangi bir yere yüklenmez.
Nasıl Kullanılır
- Bir yön seçin: "JSON → YAML" veya "YAML → JSON".
- Verinizi giriş kutusuna yapıştırın.
- "Dönüştür" düğmesine tıklayın.
- Sonucu inceleyin, ardından kopyalayın veya bir dosya kaydetmek için "İndir" düğmesine tıklayın.
Örnek
Giriş
{"name":"Alice","roles":["admin","editor"],"active":true}Çıkış
name: Alice
roles:
- admin
- editor
active: true
Dizinin "roles" altında tireli bir liste haline nasıl geldiğine ve boolean değerin string "true" olmak yerine tırnaksız true olarak nasıl kaldığına dikkat edin.
Pratik ipuçları
- Bir Kubernetes manifesti veya GitHub Actions workflow'u yazmak: yapıyı önce JSON olarak taslak haline getirin (birçok editör ve yapay zeka aracı JSON'u daha güvenilir şekilde üretir), ardından son dosya için YAML'a dönüştürün.
- Sorunlu davranan bir YAML yapılandırmasını hata ayıklamak: hangi değerlerin string, sayı veya boolean olduğunu tam olarak görmek için JSON'a dönüştürün — YAML'ın esnek söz dizimi, JSON'da açıkça görülen tür uyuşmazlıklarını gizleyebilir.
- JSON'unuz özel karakterler içeren veya bir sayıyla başlayan anahtarlar içeriyorsa, js-yaml bunları YAML çıktısında otomatik olarak tırnak içine alır, böylece geri dönüşte doğru şekilde ayrıştırılırlar.
Tür dönüşümü neden YAML'ın en zorlu kısmı
YAML'ın JSON'a göre en büyük kullanılabilirlik avantajı — çoğu değerin etrafına tırnak koymayı gerektirmemesi — aynı zamanda en büyük ince hata kaynağıdır. Klasik örnek "Norveç sorunu"dur: YAML 1.1'de (birçok eski ayrıştırıcı tarafından kullanılır), tırnaksız bir `no` değeri, "no" string'i olarak değil, boolean `false` olarak yorumlanır; bu durum Norveç ülke kodunu listeleyen gerçek dünya yapılandırmalarını bozmuştur. Bu araç, boolean olarak ele alınan tırnaksız değerler kümesini yalnızca `true` ve `false` (ve büyük/küçük harf varyantları) ile sınırlayan YAML 1.2 spesifikasyonunu izler ve bu tür sürprizleri azaltır — tamamen ortadan kaldırmasa da. Bir değerin nasıl tiplendirileceğinden emin değilseniz, YAML'ınızda onu açıkça tırnak içine almak en güvenli seçimdir.
Sıkça Sorulan Sorular
YAML yorumları JSON'a dönüştürülüp geri dönüştürüldüğünde korunur mu?
Hayır. JSON'da yorum kavramı yoktur, bu yüzden YAML'ı JSON'a dönüştürmek kaynaktaki # yorumlarını atar. Bu JSON'u tekrar YAML'a dönüştürürseniz yorumlar geri gelmez — bu, aracın bir hatası değil, formatın doğasında olan bir sınırlamadır.
Araç YAML çapalarını ve takma adlarını (& ve *) nasıl işler?
Altta yatan ayrıştırıcı (js-yaml), JSON üretmeden önce çapaları ve takma adları çözer, bu yüzden bir veri bloğunu yeniden kullanmak için & çapaları ve * takma adları kullanan bir YAML dosyası, o verinin referans verildiği her yerde tam olarak genişletilmiş şekilde JSON'a dönüştürülür.
YAML sayım neden JSON'da string olarak geldi, ya da tam tersi?
Bir değer YAML kaynağında tırnak içine alınmışsa (örneğin version: "3.10"), bilinçli olarak string olarak ele alınır — bu önemlidir çünkü 3.10 gibi tırnaksız YAML sayıları, float olarak ayrıştırıldığında sondaki sıfırı kaybedebilir. Bir değerin özellikle metin olarak ele alınmasını istiyorsanız, kaynak YAML'da bu değeri tırnak içine alın.
Birden fazla belge içeren (--- ile ayrılmış) bir YAML dosyasını dönüştürebilir miyim?
Bu araç bir seferde tek bir YAML belgesini dönüştürür. Dosyanız --- işaretleriyle ayrılmış birden fazla belge içeriyorsa, her bölümü ayrı ayrı dönüştürün veya kullanım durumunuza uygunsa önce ayırıcıları kaldırıp tek bir belgede birleştirin.
Verilerim herhangi bir yere yükleniyor mu?
Hayır. Dönüştürme işlemi tamamen js-yaml kütüphanesi aracılığıyla tarayıcınızda gerçekleşir — hiçbir şey bir sunucuya gönderilmez, bu da iç ana bilgisayar adları veya altyapı ayrıntıları içerenler de dahil olmak üzere gerçek yapılandırma dosyalarıyla kullanmayı güvenli hale getirir.