araç köşesi

JSON'dan YAML'a

JSON ayarını YAML'a çevirin; tırnak, girinti ve çok satırlı metin kuralları doğru uygulanır, YAML'dan JSON'a geri dönüş aynı sayfada

Verileriniz sizde kalır. Dönüşüm tarayıcının içinde yapılır, hiçbir şey sunucuya gitmez.

Nasıl çalışır?

Elinizde bir API'den ya da uygulamadan çıkmış JSON ayar var, ama docker-compose, GitHub Actions iş akışı veya Kubernetes bildirimi YAML istiyor: JSON metnini sol panele yapıştırın, YAML sağ panelde siz yazarken belirir. Nesne anahtarları 'anahtar: değer' satırlarına, diziler '- öğe' satırlarına döner; iç içe yapı girintiyle anlatılır ve girinti yalnızca boşluktur, çünkü YAML sekmeye izin vermez. Dize değerleri tırnaksız yazılır; yalnız YAML'da başka şeye dönüşecek dizeler tırnaklanır: JSON'da metin olan "true", "007", "1e3" ya da "2024-01-05" tırnaksız yazılsaydı YAML okuyucusu bunları mantıksal değer, sayı ya da tarih sanırdı. Kaç dizenin bu yüzden tırnaklandığı sonuç satırında yazar. Çok satırlı metin '|' blok skaleriyle satır satır yazılır, sayılar JSON'daki yazımıyla (1e3, 1.0) kalır. Sonucu docker-compose.yml, .github/workflows/deploy.yml gibi hedef dosyaya yapıştırın ya da .yaml olarak indirin. Ters yön için 'YAML → JSON' seçin: blok eşleme ve diziler, tırnaklı dizeler, tek satırlık [ ] ve { } akış biçimi, '|' ve '>' blokları ile yorumlar okunur; çapa, alias ve etiket gibi desteklenmeyen yapılar satır numarasıyla bildirilir. Bu yönde indirilen dosyayı .json uzantısıyla kaydedin; indirme adı her iki yönde de veri.yaml'dır. JSON geçerli değilse hangi satırın hangi sütununda takıldığınız Türkçe olarak söylenir.

Bu araç json to yaml, yaml to json, json yaml converter aramalarıyla da biliniyor.

JSON nedir?

JSON, programların birbirine veri aktarırken kullandığı metin biçimidir; bu sayfada karşınıza çoğunlukla bir uygulamanın dışa aktardığı ayar dosyası ya da bir API'nin döndürdüğü cevap olarak çıkar. Kuralları katıdır ve bu katılık aslında işinize yarar: her anahtar çift tırnak içindedir, değerler virgülle ayrılır, yorum satırı yoktur, son öğeden sonra virgül konamaz. Bu yüzden bir JSON'un geçerli olup olmadığı kesin olarak bilinir; araç geçersiz metinde hangi satır ve sütunda takıldığınızı söyler. Türler açıktır: 7 sayı, "7" metindir. YAML'a geçerken bu ayrımın kaybolmaması için tırnak kararı önem kazanır.

YAML nedir?

YAML, insanın okuyup elle düzenlemesi için tasarlanmış yapılandırma biçimidir; docker-compose, GitHub Actions, Kubernetes, Ansible ve Home Assistant ayar dosyaları YAML'dır. Yapı parantezle değil girintiyle anlatılır: bir satır üstündekinden daha içeride başlıyorsa onun altındadır, bu yüzden girinti yalnızca boşlukla yapılır ve sekme yasaktır. Anahtarlar tırnaksız yazılır, '#' ile başlayan yorum bırakabilirsiniz, çok satırlı metin '|' işaretiyle olduğu gibi yazılır. Kolay okunmanın bedeli belirsizliktir: tırnaksız no, 007 ya da 2024-01-05 bazı okuyucularda metin olmaktan çıkar; bu araç böyle değerleri tırnaklayarak korur.

JSON ile YAML arasındaki fark nedir?

İkisi de aynı veri modelini taşır: eşleme (anahtar-değer), dizi ve skaler. Fark yazımda ve hedef okuyucudadır. JSON makine için yazılmıştır: parantez ve tırnak zorunludur, yorum yoktur, her şey tek biçimde yazılır ve bu yüzden hatasız üretilip ayrıştırılır; API cevapları ve veri dosyaları JSON'dur. YAML insan için yazılmıştır: yapı girintiden okunur, tırnak çoğu zaman gereksizdir, yorum satırı bırakılır, uzun metin blok olarak yazılır; elle düzenlenen yapılandırma dosyaları YAML'dır. YAML 1.2 aynı zamanda JSON'un üst kümesidir, yani geçerli bir JSON metni aynı zamanda geçerli YAML'dır — bu araç YAML→JSON yönünde JSON metnini bu yüzden doğrudan kabul eder. Bedel, YAML'ın tırnaksız değerlerinin tip belirsizliğidir: JSON'da "true" ile true birbirinden ayrıdır, YAML'da tırnaksız true mantıksal değerdir. Dönüşümde asıl iş bu ayrımı korumaktır ve sonuç satırı kaç dizenin bu sebeple tırnaklandığını söyler.

YAML tuzakları: sekme, yes/no ve tırnaksız 007

YAML'ın yapısı girintiden okunur ve girinti yalnızca boşluk olabilir; sekme (tab) ile girintilenmiş bir satır standarda göre hatadır. Bu araç bu yüzden sekme seçeneği sunmaz. Elinizdeki bir YAML dosyası 'girinti tutarsız' hatası veriyorsa çoğu zaman görünmeyen bir sekme vardır; editörünüzde 'sekmeleri boşluğa çevir' komutu sorunu bitirir.

İkinci tuzak sürüm farkıdır. YAML 1.1'de tırnaksız yes, no, on ve off mantıksal değerdi; YAML 1.2 bunları sıradan dize sayar. GitHub Actions dosyasındaki 'on:' anahtarı ve docker-compose'daki 'restart: no' bu yüzden ünlüdür: eski bir okuyucu on'u true, no'yu false yapar. Bu araç YAML→JSON yönünde 1.2 kuralını uygular (yes dize kalır), JSON→YAML yönünde ise bu sözcükleri tırnaklar ki çıktı hangi nesil okuyucuya giderse gitsin metin kalsın.

Üçüncüsü tırnaksız yazılınca tipi değişen dizelerdir. JSON'da "007" bir metindir; YAML'da tırnaksız 007 sayı 7'dir, 1e3 bin olur, 2024-01-05 ise tarih. Araç bu dizeleri çift tırnağa alır ve kaçını aldığını sonuç satırında söyler. Aynı kural boş dize (""), baş ya da sonunda boşluk taşıyan metin, iki nokta ve boşluk (': ') içeren değer ve '#', '-', '*', '&' gibi YAML'da anlam taşıyan işaretle başlayan metinler için de geçerlidir.

Çok satırlı metin ise '|' blok skaleri ile yazılır: 'aciklama: |' başlığının altına satırlar girintili gelir, sondaki satır sonu yoksa '|-' kullanılır. Bu biçim kaçış karakteri gerektirmediğinden komut listesi ve uzun açıklama için en okunur yoldur.

Hangi durumda hangisi: girinti, yön ve dosya adı

Girinti için 2 boşluk seçin; docker-compose, GitHub Actions ve Kubernetes örneklerinin tamamı bu biçimdedir ve ekibinizin dosyalarıyla uyumlu kalırsınız. 4 boşluk yalnızca derin iç içe yapıda, satırların hangi seviyeye ait olduğunu gözle ayırmak zorlaşınca işe yarar. İki seçenek de geçerli YAML üretir; fark okunurluktur.

YAML→JSON yönü dar ve açık kapsamlıdır: blok eşleme ve dizi, iç içe girinti, tırnaklı ve tırnaksız dizeler, tek satırlık [a, b] ve {a: 1} akış biçimi, '|' ve '>' blokları, yorumlar ve tek '---' belge başı okunur. Çapa ve alias (&taban, *taban), tür etiketi (!!str), '?' ile başlayan karmaşık anahtar, birden çok satıra yayılmış tırnaklı ya da akış değeri ve tek metinde birden çok belge desteklenmez; bunlardan biri varsa araç satır numarasıyla söyler, sessizce yanlış çıktı üretmez. Alias kullanan bir dosyayı çevirmek için önce alias'ın açtığı değeri elle yerine yazın.

İndirme adı her iki yönde de veri.yaml'dır. JSON→YAML çıktısını .yaml ya da .yml ile kaydedebilirsiniz; ikisi aynı biçimdir, docker-compose.yml ve GitHub Actions .yml, Kubernetes ise çoğunlukla .yaml kullanır. YAML→JSON yönünde indirdiğiniz dosyanın adını .json ile bitirin; sonuç satırı bunu her seferinde hatırlatır.

Sık sorulanlar

JSON dosyası YAML'a nasıl çevrilir?

JSON dosyasını bir metin düzenleyicide açıp içeriğini kopyalayın, bu sayfada sol panele yapıştırın; YAML sağ panelde anında oluşur. Çıktıyı kopyalayıp hedef dosyaya (docker-compose.yml, iş akışı dosyası) yapıştırabilir ya da .yaml olarak indirebilirsiniz. Dosyayı sürükleyip bırakmanız gerekmez, metin yeterlidir.

YAML'ı JSON'a geri çevirebilir miyim?

Evet, 'Çevirme yönü' seçeneğini 'YAML → JSON' yapın. Blok eşleme ve diziler, tırnaklı dizeler, tek satırlık akış biçimi, '|' ve '>' blokları ve yorumlar okunur. Çapa/alias, etiket ve birden çok belge desteklenmez; böyle bir yapı varsa hangi satırda olduğu söylenir. İndirilen dosyayı .json uzantısıyla kaydedin.

Neden bazı değerler tırnak içinde çıktı?

Çünkü tırnaksız yazılsalardı YAML okuyucusu onları metin değil başka bir tür sayardı: "true" mantıksal değer, "007" sayı 7, "1e3" bin, "2024-01-05" tarih, "yes" ise eski (1.1) okuyucularda true olurdu. Boş dize, baş/son boşluklu metin ve '#', '-', ': ' gibi YAML işaretleri içeren değerler de aynı sebeple tırnaklanır. Kaç dizenin tırnaklandığı sonuç satırında yazar; tırnak veriyi değiştirmez, korur.

Yapıştırdığım veriler sunucuya gidiyor mu?

Hayır. Ayrıştırma ve YAML üretimi tamamen tarayıcınızın içinde yapılır; veritabanı parolası ya da API anahtarı içeren bir yapılandırma yapıştırsanız bile metin bu sayfadan çıkmaz ve hiçbir yere kaydedilmez.