Tarayıcınızda JSON'u YAML'a ve YAML'ı JSON'a dönüştürün
JSON ve YAML aynı tür veriyi — iç içe haritalar, listeler, dizeler, sayılar ve boolean'lar — tanımlar; ancak çok farklı görünürler ve farklı yerlerde kullanılırlar. API'lerin, konteyner dosyalarının veya CI süreçlerinin yakınında zaman geçiriyorsanız eninde sonunda birini diğerine çevirmeniz gerekir. Bu sayfa bu dönüşümü her iki yönde, tamamen tarayıcınızda yapar; yapıştırdığınız veri makinenizi terk etmez.

JSON nedir ve nerede kullanılır
JSON (JavaScript Object Notation), önce makineler için tasarlanmış katı, parantez-ve-küme parantezi biçimidir. Her nesne {} içine sarılır, her dizi [] içine, anahtarlar ve dize değerleri çift tırnaklanır, öğeler virgülle ayrılır. REST ve GraphQL API'lerinin varsayılan aktarım biçimi, çoğu webhook'un gövdesi, NoSQL belgelerinin şekli ve fetch çağrınızın döndürdüğü şeydir. Neredeyse her dil onu kutudan çıktığı gibi ayrıştırır; bu da onu API katmanını kazanmasını sağlar: JavaScript'te JSON.parse, Python standart kütüphanesinde json ve her yerde eşdeğerleri. Değiş tokuşu, JSON'un elle yazmak için ayrıntılı olması ve yorumlara izin vermemesidir; bu nedenle insanın gün boyu düzenlediği dosyalar için zayıf bir biçimdir.
YAML nedir ve nerede kullanılır
YAML (YAML Ain't Markup Language), tam ters öncelik için tasarlandı: önce insanlar. Parantezleri ve tırnakları düşürür, iç içe geçmeyi ifade etmek için girintileme kullanır ve # ile yorum yazmanıza izin verir. Bu okunabilirlik, onun yapılandırmanın ortak dili haline gelmesinin nedenidir. Docker Compose dosyaları, Kubernetes manifestoları, GitHub Actions ve GitLab CI iş akışları, Ansible playbookları ve sayısız uygulama yapılandırma dosyası hepsi YAML'dır. Tipik bir YAML belgesi, eşdeğer JSON'dan belirgin ölçüde daha kısadır ve bir çekme isteğinde çok daha kolay diff'lenir. Bu zarafetin bedeli kırılganlıktır; dönüşümün ilginçleştiği yer de burasıdır.
Dönüşüm kararlarını etkileyen temel farklılıklar
Neredeyse her dönüşüm kararını üç farklılık yönlendirir. Birincisi, YAML'da boşluk anlamlıdır, JSON'da anlamsız. YAML yapıyı belirtmek için boşlukları kullanır — sekme asla — bu nedenle tek bir hatalı hizalanmış boşluk bir belgenin anlamını sessizce değiştirebilir. JSON ise girintilemeyi hiç umursamaz. İkincisi, YAML yorumları destekler, JSON desteklemez. YAML'daki tüm # yorumları JSON üretirken düşer çünkü onu koyacak bir yer yoktur. Üçüncüsü, YAML daha zengin, örtük yazım sağlar. Tarihleri, zaman damgalarını ve birden fazla yazımda null'u mutlu mesut okur; tırnak içine alınmamış değerlerden türleri tahmin eder. JSON küçük, açık bir tür kümesine sahiptir ve belirsizliği yoktur. Ayrıca JSON'un teknik olarak YAML 1.2'nin bir alt kümesi olduğunu unutmayın; bu nedenle geçerli JSON genellikle YAML olarak temizce ayrıştırılır, ancak tersi garanti değildir.

Dikkat edilmesi gereken dönüşüm tuzakları
Gidiş-dönüş her zaman kayıpsız değildir; nelerin bozulduğunu bilmek işe yarar:
- Norveç sorunu. YAML 1.1 kurallarına göre, tırnaksız
NO,falseboolean olarak ayrıştırılır;yes,onveoffde boolean'a dönüşür. Bir ülke kodu veya anahtar etiketi fark etmedentrue/false'a dönüşebilir. Dize olarak kastettiğiniz değerleri tırnak içine alın. - Sayı zorlama.
3.10gibi bir sürüm, sondaki sıfırını kaybedip3.1'e dönüşebilir; metin istediğinizde bile1.0sayı olur. Sürüm dizelerini ve kimlikleri tırnak içine alın. - Çapa ve takma adlar kaybolur. YAML'ın
&anchorve*aliasbaşvurularının JSON'da karşılığı yoktur. İyi bir dönüştürücü bunları tam değerlerine genişletir; veri doğrudur ancak tekilleştirme gider — JSON'dan YAML'a geri döndüğünüzde orijinal çapalar yeniden oluşturulmaz. - Yorumlar ve blok skalerler. JSON'a geçerken yorumlar düşer. Çok satırlı blok skalerler (
|ve>),\nkaçışlarıyla sıradan JSON dizelerine çöker; görsel biçimlendirme amacı kaybolur. - YAML'a geri dönerken girintileme. JSON girintilemeyi kodlamaz; dönüştürücü tutarlı bir stil seçer. Sekme duyarlı bir araca yapıştırmadan önce gözden geçirin.
Neden yalnızca yerel önemlidir
Yapılandırma dosyaları ve API yükleri tam olarak rastgele bir sunucuya yüklememeniz gereken şeylerdir: genellikle ana bilgisayar adlarını, token'ları, dahili servis adlarını veya müşteri verilerini taşırlar. Bu dönüştürücü, ayrıştırma-ve-yayma adımını tarayıcınızda JavaScript ile çalıştırır. Arka uca hiçbir şey gönderilmez, hiçbir şey kaydedilmez ve sayfa bir kez yüklendiğinde araç çevrimdışı da çalışır. Bir Kubernetes sırrını veya kimlik bilgisi içeren bir CI iş akışını makinenizde kalacağına güvenerek yapıştırın.
İlgili araç mı arıyorsunuz? Veri dönüştürücülerin tamamını inceleyin, dağınık girdiyi JSON biçimlendiriciyle temizleyin ve API dünyasıyla yapılandırma dünyası arasında geçiş yapmanız gerektiğinde buraya gelin.
Sıkça sorulan sorular
Verilerim herhangi bir yere yükleniyor mu?
Hayır. Dönüşüm, yerel JavaScript kullanılarak tamamen tarayıcınızda gerçekleşir. JSON veya YAML'ınız hiçbir zaman sunucuya gönderilmez; bu nedenle sırlar ve yapılandırma dosyaları gizli kalır.
YAML'daki true veya false değerim neden beklenmedik biçimde değişti?
YAML 1.1, yes, no, on ve off gibi tırnaksız kelimeleri boolean olarak değerlendirir; bu Norveç sorunudur. Dize olarak kastettiğiniz değerleri tırnak içine alın; böylece dönüşümde metin olarak korunur.
YAML'ı JSON'a dönüştürdüğümde yorumlarıma ne olur?
JSON yorum sözdizimi içermez; bu nedenle tüm diyez yorumları dönüşüm sırasında silinir. Notları saklamanız gerekiyorsa yetkili kopyayı YAML'da tutun.
YAML çapaları ve takma adları korunuyor mu?
JSON'da başvuru mekanizması olmadığından tam değerlerine genişletilirler. Veri doğru kalır, ancak tekilleştirme, YAML'a geri döndüğünüzde kurtarılamaz.
JSON'u YAML'a ve YAML'ı da JSON'a dönüştürebilir miyim?
Evet, araç her iki yönde çalışır. YAML elde etmek için JSON yapıştırın ya da JSON elde etmek için YAML yapıştırın; dönüştürücü diğer biçimi algılar ve çıkarır.
Sekme kullandığımda YAML neden bozuluyor?
YAML girintileme için boşluk gerektirir ve sekmeleri reddeder. Bir yapıştırma ayrıştırılamazsa sekme karakterlerini boşlukla değiştirin ve girintilemeyi tutarlı tutun.
