YAML'ı JSON'a, JSON'ı YAML'a dönüştürün; sözdizimi hatalarının tam satır ve sütununu görün.
YAML ve JSON aynı şeyleri tarif eder — eşlemeler, listeler, metinler, sayılar, boolean değerler ve null — ama öncelikleri birbirinin tersidir. JSON, makinelerin sevdiği ama insanların yanlış yazdığı süslü parantezler ve tırnaklar kullanır. YAML ise girinti ve neredeyse hiç noktalama kullanmaz; bu da başıboş bir boşluk belgenin biçimini değiştirene kadar insanların hoşuna gider. İkisi arasında dönüştürmek rutin bir iştir: bir Kubernetes manifestini ya da bir GitHub Actions iş akışını, bir betiğin işleyebilmesi için JSON olarak okumak; ya da bir API yanıtını yapılandırma dosyası için YAML'a geri çevirmek. Bu araç iki yönde de çalışır ve hangisini yapıştırdığınızı kendisi algılar.
Dönüştürme işin kolay yarısıdır; bu aracın asıl emek harcadığı yer, YAML bozuk olduğunda ne olduğudur. Sözdizimi hatası, bir editörün saydığı gibi sayılan satır ve sütun olarak bildirilir; yanına çevredeki satırlardan bir kesit ve ayrıştırıcıyı durduran karakterin tam altına bir işaret konur. Konum her zaman beklediğiniz yerde olmaz. Girinti için kullanılan bir sekme, tam sekmenin bulunduğu yerde reddedilir ve kesitte bir ok olarak yazdırılır; böylece göremediğiniz şeyi görürsünüz. Kapanmamış bir tırnak, açılış tırnağında değil, dosyanın sonunda bildirilir; çünkü ayrıştırıcı kapanışı ararken metnin orada sonu gelmiştir. Tekrar eden bir anahtar ikinci geçtiği yerde işaretlenir ve burada uyarı değil, hatadır. JSON hataları da aynı muameleyi görür: tarayıcılar bunları farklı ifade eder ve bazıları yalnızca karakter konumunu bildirir, bu yüzden satır ve sütun burada hesaplanır ve her yerde aynı çıkar.
YAML, JSON'ın ifade edemediği şeyleri ifade edebilir ve bunların her biri verinizi sessizce değiştirmek yerine açıkça bildirilir. Çapalar (anchors) ve takma adlar (aliases) genişletilir; yani bir takma ad, çapalanmış değerin tam bir kopyası hâline gelir ve bu size söylenir. Merge key'ler ise genişletilmez: ayrıştırıcı, bunları çözmeyen JSON şeması üzerinde çalışır; bu yüzden bir << satırı düz bir anahtar olarak kalır ve o alanları elle birleştirmeniz için bir uyarı verilir. --- ile ayrılmış birkaç belge içeren bir dosya, her belge bir öğe olacak şekilde bir JSON dizisine dönüşür. .inf ve .nan değerleri null olarak çıkar, çok büyük tam sayılar ise son basamaklarını yitirir; ikisi de işaretlenir. Bu şema aynı zamanda bir güvenlik tercihidir: !!js/function gibi etiketler örneklenmek yerine bilinmeyen olarak reddedilir. Ve bunların hiçbiri bir yere gitmez — her şey sizin cihazınızda çalışır.
Hayır. Metin, kendi cihazınızda JavaScript tarafından ayrıştırılır ve dönüştürülür — hiçbir yere bir şey gönderilmez, saklanmaz veya kaydedilmez. Bu burada önemlidir: bir Kubernetes manifesti sunucu adlarını, portları, bucket adlarını ve servis hesaplarını taşır.
Ayrıştırıcının pes ettiği yeri gösterirler; tıpkı editörünüzdeki gibi 1'den sayılır ve o karakterin altında bir işaret bulunur. Bir durum insanları şaşırtır: kapanmamış bir tırnak dosyanın sonunda bildirilir, bu yüzden en son açtığınız tırnağı geriye doğru arayın.
Evet. Her takma ad, JSON'da çapalanmış değerin tam bir kopyası hâline gelir ve araç bunu size söyler. İstisna merge key'lerdir: çözülmezler, << düz bir anahtar olarak kalır ve sessizce yanlış bir sonuç yerine açık bir uyarı alırsınız.
Evet. JSON'da tek bir dosyada birden çok belge kavramı yoktur; bu yüzden her YAML belgesi sırasıyla bir JSON dizisinin bir öğesi olur ve kaç belge bulunduğunu bir bildirim söyler.
Çünkü YAML 1.2 yalnızca true ve false değerlerini boolean sayar; yes, no, on ve off metin olarak kalır. Daha eski 1.1 ayrıştırıcıları bunları dönüştürürdü — NO ülke kodunu false'a çeviren kuralın aynısı. Bir değerin metin kalması gerekiyorsa onu tırnak içine alın.
Vai.la, herhangi bir URL'yi tıklama istatistikleri, QR Code ve kendi biolink'inizle birlikte kısa bir bağlantıya dönüştürür.
Vai.la, araçların nasıl kullanıldığından veya sonuçlarına dayanarak alınan kararlardan sorumlu değildir.