JSON, YAML, CSV: Hangisini Ne Zaman Kullanmalı ve Nasıl Dönüştürülür?
Bir veri seti indiriyorsunuz ve CSV formatında. API'niz JSON döndürüyor. Yapılandırma dosyanız YAML'da. Bir meslektaşınız size bir JSON dosyası gönderip bunu elektronik tablo olarak istiyor. Başka bir meslektaşınız size bir YAML yapılandırması veriyor ve farklı bir araç için JSON'a ihtiyacınız var.
Veri formatı dönüşümü, siz gerçekten yapmaya başlayana kadar önemsiz görünen görevlerden biridir. Hangi formatı ne zaman kullanacağınızı ve aralarında nasıl geçiş yapacağınızı anlamak gerçek zaman kazandırır.
Üç Formata Genel Bakış
JSON (JavaScript Object Notation)
{
"name": "Alice",
"age": 30,
"skills": ["Python", "SQL", "Docker"],
"address": {
"city": "Berlin",
"country": "Germany"
}
}
Nedir: Nesneleri (anahtar-değer çiftleri), dizileri (sıralı listeler), dizgeleri, sayıları, boole değerlerini ve null'u destekleyen yapılandırılmış veriler için bir metin formatıdır.
Güçlü Yönleri: Makine tarafından okunabilir, her programlama dilinde geniş destek, iç içe verileri doğal olarak işler, katı sözdizimi belirsizliği önler.
Zayıf Yönleri: Ayrıntılı (çok sayıda süslü parantez, köşeli parantez ve tırnak işareti), YAML kadar okunabilir değil, yorum desteği yok.
YAML (YAML Ain't Markup Language)
name: Alice
age: 30
skills:
- Python
- SQL
- Docker
address:
city: Berlin
country: Germany
Nedir: Süslü parantezler ve köşeli parantezler yerine girintileme kullanan, insan dostu bir veri serileştirme formatıdır. JSON'un bir üst kümesidir; yani geçerli bir JSON aynı zamanda geçerli bir YAML'dır.
Güçlü Yönleri: Son derece okunabilir, yorum desteği, daha az görsel karmaşa, yapılandırma dosyaları için harika.
Zayıf Yönleri: Girintilemeye duyarlı (yanlış boşlukla kolayca bozulabilir), bazı şaşırtıcı ayrıştırma davranışları, JSON'dan daha yavaş ayrıştırma.
CSV (Comma-Separated Values)
name,age,city,country
Alice,30,Berlin,Germany
Bob,25,London,UK
Charlie,35,Paris,France
Nedir: Her satırın bir kayıt ve bir satırdaki değerlerin virgülle (bazen noktalı virgül veya sekme ile) ayrıldığı düz bir metin formatıdır.
Güçlü Yönleri: Evrensel (her elektronik tablo, veritabanı ve veri aracı destekler), tablo verileri için kompakt, okumak ve oluşturmak kolay.
Zayıf Yönleri: İç içe veri desteği yok, veri türleri yok (her şey dizge), özel karakterler için standart yok, düz tablolarla sınırlı.
Biliyor muydunuz? YAML teknik olarak JSON'un bir üst kümesidir. Bu, herhangi bir geçerli JSON belgesinin otomatik olarak geçerli bir YAML belgesi olduğu anlamına gelir. JSON'u bir YAML ayrıştırıcısına yapıştırabilirsiniz ve çalışır. Tersi doğru değildir — YAML'ın özellikleri (yorumlar, çapalar, çok satırlı dizgeler) JSON'da karşılığı yoktur.
Hangisini Ne Zaman Kullanmalı?
| Kullanım Alanı | En İyi Format | Neden |
|---|---|---|
| API istekleri ve yanıtları | JSON | Endüstri standardı, her dilde yerel destek |
| Yapılandırma dosyaları | YAML | İnsan tarafından okunabilir, dokümantasyon için yorum desteği |
| Elektronik tablo verileri | CSV | Excel, Google Sheets vb. ile doğrudan açılır |
| Veritabanı dışa aktarımları | CSV | Düz tablo verileri doğrudan satır ve sütunlara eşlenir |
| Karmaşık iç içe veriler | JSON veya YAML | CSV iç içe yapıları temsil edemez |
| Sistemler arası veri alışverişi | JSON | Kesin ayrıştırma, katı spesifikasyon |
| İnsan tarafından düzenlenen yapılandırma | YAML | Elle okumak ve düzenlemek daha kolay |
| Basit veri listeleri | CSV | Hafif, ek yük yok |
Formatlar Arası Dönüştürme
JSON'dan YAML'a
Bu en yaygın yapılandırma dönüşümüdür. Bir araçtan JSON yapılandırmanız var ve başka bir araç için YAML'a ihtiyacınız var. YAML, JSON'un desteklediği her şeyi desteklediği için dönüşüm basittir.
{"server": {"host": "0.0.0.0", "port": 8080}}
Şuna dönüşür:
server:
host: 0.0.0.0
port: 8080
YAML'dan JSON'a
YAML'dan JSON'a geçiş de basittir, ancak yorumları kaybedersiniz (JSON yorumları desteklemez) ve sonuç daha ayrıntılıdır.
JSON'dan CSV'ye
Bu, düz JSON dizileri (aynı anahtarlara sahip nesne dizileri) için iyi çalışır. Her nesne bir satır, her anahtar bir sütun başlığı olur.
[
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25}
]
Şuna dönüşür:
name,age
Alice,30
Bob,25
Uyarı JSON'dan CSV'ye dönüşüm, JSON iç içe nesneler veya diziler içerdiğinde sorunlu hale gelir. CSV düzdür — bir "skills" dizisini veya iç içe bir "address" nesnesini temsil etmenin yolu yoktur. İç içe veriler ya düzleştirilmeli (address.city, address.country ayrı sütunlar olarak) ya da CSV hücresi içinde dizge olarak serileştirilmelidir.
CSV'den JSON'a
Her satır bir nesne olur, sütun başlıkları anahtar olarak kullanılır. Basit tablo verileri için temiz bir çözümdür.
CSV'den YAML'a
Daha az yaygındır, ancak aynı mantığı izler: her satır bir YAML eşlemesi olur ve dosyanın tamamı bir YAML dizisi haline gelir.
Yaygın Tuzaklar
CSV Kodlama Sorunları
CSV dosyaları farklı karakter kodlamaları kullanabilir (UTF-8, Latin-1, Windows-1252). Bir CSV'yi açtığınızda "München" yerine "München" gibi bozuk karakterler görüyorsanız, bu bir kodlama uyumsuzluğudur. Mümkün olduğunca UTF-8 kullanın.
CSV Ayırıcı Karışıklığı
Tüm CSV'ler virgül kullanmaz. Avrupa'da CSV'ler genellikle noktalı virgül kullanır çünkü birçok Avrupa sayı formatında ondalık ayırıcı olarak virgül kullanılır. Türkiye'de de noktalı virgül yaygın bir ayırıcıdır. Sekmeyle ayrılmış değerler (TSV) başka bir yaygın varyasyondur.
YAML Girintileme Hataları
YAML, yapıyı tanımlamak için girintileme (boşluk, asla sekme değil) kullanır. Tutarsız girinti veya sekme ile boşluk karışımı, ayrıştırma hataları veya sessiz yanlış yorumlama üretir. Girinti düzeyi başına tam olarak 2 boşluk kullanın ve düzenleyicinizi sekme yerine boşluk ekleyecek şekilde yapılandırın.
Uyarı YAML'da no dizgesi false boole değeri olarak, yes ise true olarak ayrıştırılır. 1.0 dizgesi sayı olarak ayrıştırılır. Gerçek dizge olarak "no", "yes" veya "1.0" istiyorsanız, tırnak içine almalısınız: "no", "yes", "1.0". Bu, YAML'ın en ünlü tuzaklarından biridir.
JSON Sondaki Virgüller
JSON sondaki virgüllere izin vermez. Bu JavaScript'te geçerlidir ancak JSON'da geçersizdir:
{"name": "Alice", "age": 30,} // Geçersiz JSON: sondaki virgül
Büyük Dosya Performansı
Çok büyük veri setleri (milyonlarca satır) için CSV, JSON veya YAML'dan daha verimlidir çünkü kayıt başına minimum ek yükü vardır. JSON her değer için süslü parantez ve tırnak ekler, bu da büyük tablo verileri için dosya boyutunu önemli ölçüde artırır.
Dönüştürme İçin Pratik Araçlar
Hızlı, tek seferlik dönüşümler için tarayıcı tabanlı araçlar en hızlı seçenektir. Verilerinizi yapıştırır veya yüklersiniz, hedef formatı seçersiniz ve sonucu anında alırsınız.
İpucu JSON, YAML ve CSV formatları arasında anında dönüşüm yapın: Veri Formatlarını Dönüştürme. Verilerinizi yapıştırın, hedef formatı seçin ve sonucu kopyalayın veya indirin.
Özellikle JSON ile çalışmak için, JSON'unuzu doğrulayan ve güzelleştiren bir biçimlendirici paha biçilmezdir:
- JSON Biçimlendirici — JSON'u doğrula, biçimlendir ve küçült
- JSON'dan CSV'ye Dönüştürücü — JSON dizilerini CSV'ye dönüştür
- YAML-JSON Dönüştürücü — YAML ve JSON arasında dönüşüm yap
- CSV Görüntüleyici — CSV dosyalarını görüntüle ve keşfet
Verilerinizi şimdi dönüştürün:
Tüm araçlar ücretsizdir ve doğrudan tarayıcınızda çalışır.