Bir web uygulaması yapılandırıyor, hizmetler arasında veri alışverişi yapıyor, bir elektronik tablo dışa aktarımını analiz ediyor veya bir API yanıtını okuyorsanız, yapılandırılmış metin formatlarında saklanan verilerle karşılaşacaksınız. En yaygın dördü JSON, YAML, CSV ve XML'dir.
Her format farklı hedefler gözetilerek tasarlanmıştır ve doğru olanı seçmek kullanım durumunuza bağlıdır. Bu makale her formatın ne olduğunu, nasıl göründüğünü, ne zaman kullanılacağını ve birbirleriyle nasıl karşılaştırıldığını açıklar.
JSON — JavaScript Object Notation
JSON, web'de baskın veri alışveriş formatı haline gelmiştir. Adına rağmen dilden bağımsızdır ve her yerde kullanılır.
Sözdizimi örneği:
{
"name": "Alice Martin",
"age": 34,
"skills": ["Python", "SQL", "Docker"],
"address": {
"city": "Lyon",
"country": "France"
}
}
Temel özellikler:
- Temiz, okunabilir sözdizimi ile anahtar-değer çiftleri
- String, sayı, boolean, dizi, nesne ve null destekler
- Standart JSON'da yorumlara izin verilmez
- Katı sözdizimi — sondaki virgüller ve tek tırnaklar hata oluşturur
Yaygın kullanım alanları: REST API'ler, yapılandırma dosyaları (package.json, tsconfig.json), NoSQL veritabanları (MongoDB), frontend ve backend arasında veri alışverişi.
Bilmekte fayda var. JSON'ın katı sözdizimi hem güçlü hem zayıf yönüdür. Ayrıştırmayı güvenilir ve belirsiz kılmaz, ancak tek bir eksik virgül veya fazladan sondaki virgül tüm dosyayı bozar.
YAML — YAML Ain't Markup Language
YAML, mümkün olan en insan tarafından okunabilir veri serileştirme formatı olmak üzere tasarlanmıştır. Parantez yerine girinti kullanır ve özellikle yapılandırma dosyaları için popülerdir.
Sözdizimi örneği:
name: Alice Martin
age: 34
skills:
- Python
- SQL
- Docker
address:
city: Lyon
country: France
Temel özellikler:
- Girinti tabanlı yapı (parantez veya süslü parantez yok)
#ile yorum desteği- Tüm JSON veri türlerini ve daha fazlasını destekler (tarihler, çok satırlı stringler)
- Boşluğa duyarlı — hatalı girinti dosyayı bozar
Yaygın kullanım alanları: Docker Compose dosyaları, Kubernetes manifest'leri, CI/CD boru hatları (GitHub Actions, GitLab CI), Ansible playbook'ları, Hugo/Jekyll yapılandırması.
YAML, JSON'ın bir üst kümesidir; yani herhangi bir geçerli JSON belgesi aynı zamanda geçerli YAML'dır. Ancak YAML'ın esnekliği iki ucu keskin bir kılıç olabilir — örtük tür dönüşümü (örneğin yes'in boolean true olarak yorumlanması veya 3.10'un 3.1 olması) birçok ince hataya neden olmuştur.
CSV — Comma-Separated Values
CSV en basit yapılandırılmış veri formatıdır. Tablo verilerini düz metin olarak saklar; her satır bir kayıttır ve değerler virgüllerle (veya bazen noktalı virgüllerle, sekmelerle veya diğer ayırıcılarla) ayrılır.
Sözdizimi örneği:
name,age,city,country
Alice Martin,34,Lyon,France
Bob Dupont,28,Paris,France
Carol Smith,41,London,UK
Temel özellikler:
- Son derece basit — sadece ayırıcılarla metin
- Veri türü yok — her şey stringdir
- İç içe veriyi temsil etmenin standart bir yolu yok
- Resmi evrensel standart yok (RFC 4180 mevcut ama evrensel olarak takip edilmiyor)
- Dosya boyutları çok küçüktür
Yaygın kullanım alanları: Elektronik tablo dışa aktarımları, veritabanı içe/dışa aktarımları, veri analizi (pandas, R), basit veri alışverişi, günlük dosyaları.
CSV'nin basitliği hem en büyük gücü hem de en büyük sınırlamasıdır. Düz, tablo halindeki veriler için mükemmeldir ancak hiyerarşik yapıları temsil edemez. Uç durumlar (değerlerdeki virgüller, çok satırlı alanlar, karakter kodlama sorunları) ayrıştırmayı ilk göründüğünden daha karmaşık hale getirir.
XML — Extensible Markup Language
XML, JSON devralınmadan önce baskın veri alışveriş formatıydı. HTML'e benzer etiket tabanlı sözdizimi kullanır ve şemalar, ad alanları ve dönüşümler gibi karmaşık özellikleri destekler.
Sözdizimi örneği:
<?xml version="1.0" encoding="UTF-8"?>
<person>
<name>Alice Martin</name>
<age>34</age>
<skills>
<skill>Python</skill>
<skill>SQL</skill>
<skill>Docker</skill>
</skills>
<address>
<city>Lyon</city>
<country>France</country>
</address>
</person>
Temel özellikler:
- Açılış ve kapanış etiketleriyle etiket tabanlı yapı
- Nitelikler, ad alanları, şemalar (XSD) ve dönüşümleri (XSLT) destekler
- Yorum desteği
- Diğer formatlara kıyasla çok ayrıntılı
- Son derece iyi tanımlanmış standart ve katı doğrulama
Yaygın kullanım alanları: SOAP web servisleri, kurumsal entegrasyonlar, belge formatları (DOCX, SVG, RSS), Java/.NET ekosistemlerindeki yapılandırma dosyaları, devlet ve finans veri alışverişi.
XML, JSON veya YAML'dan daha ayrıntılıdır, ancak şema doğrulama yetenekleri, veri bütünlüğü ve sistemler arası resmi sözleşmelerin kritik olduğu bağlamlarda onu vazgeçilmez kılar.
Yan Yana Karşılaştırma
| Özellik | JSON | YAML | CSV | XML |
|---|---|---|---|---|
| Okunabilirlik | İyi | Mükemmel | İyi (tablo) | Orta |
| Ayrıntı düzeyi | Düşük | Düşük | Çok düşük | Yüksek |
| Yorumlar | Hayır | Evet | Hayır | Evet |
| İç içe veri | Evet | Evet | Hayır | Evet |
| Veri türleri | Temel | Zengin | Yok (hepsi string) | Şema ile |
| Şema doğrulama | JSON Schema | Standart yok | Hayır | XSD |
| Dosya boyutu | Küçük | Küçük | En küçük | Büyük |
| Ayrıştırma hızı | Hızlı | Orta | Hızlı | Orta |
| Ana alan | Web API'ler | DevOps yapılandırma | Veri/tablolar | Kurumsal |
Hangisi Ne Zaman Kullanılır
- JSON'ı seçin — web API'ler oluştururken, JavaScript/TypeScript projeleri için yapılandırma saklarken veya hizmetler arasında veri alışverişi yaparken. Modern uygulamaların çoğu için varsayılan tercihtir.
- YAML'ı seçin — insanların sık sık okuyup düzenleyeceği yapılandırma dosyaları yazarken. Okunabilirliği ve yorum desteği, DevOps ve altyapı-kod-olarak için idealdir.
- CSV'yi seçin — tablo verileriyle çalışırken, elektronik tablolardan veya veritabanlarından içe/dışa aktarırken veya dosya boyutunun minimum olması gerektiğinde. Hiyerarşik yapılar için kaçının.
- XML'i seçin — kurumsal sistemlerle, SOAP API'lerle veya resmi şema doğrulaması gerektiren bağlamlarla çalışırken. Belge odaklı biçimlendirme gerektiğinde de (SVG veya RSS gibi) doğru seçimdir.
Formatlar Arası Dönüştürme
Formatlar arasında dönüştürme yaygın bir görevdir. Akılda tutulması gereken birkaç şey:
- JSON'dan YAML'a (ve tersi) genellikle kayıpsızdır çünkü YAML, JSON'ın üst kümesidir.
- CSV'den JSON/YAML'a düz veriler için iyi çalışır ancak iç içe çıktı için yapı hakkında kararlar gerektirir.
- XML'den JSON'a bilgi kaybedebilir (nitelikler, ad alanları, sıralama) çünkü JSON'da eşdeğer kavramlar yoktur.
- Herhangi bir formattan CSV'ye yalnızca veri düzse veya anlamlı şekilde düzleştirilebilirse çalışır.
İpucu. Formatlar arasında dönüştürme yaparken çıktıyı her zaman doğrulayın. Otomatik dönüşümler, özellikle XML nitelikleri, YAML tür dönüşümü veya CSV karakter kodlama uç durumlarıyla sessizce veri kaybedebilir.
Daha Fazlası
ToolK.io, JSON, YAML, CSV ve XML arasında dönüştürme yapmak, verilerinizi biçimlendirmek ve doğrulamak ile projelerinizde yapılandırılmış verilerle çalışmak için ilgili eğitimleri keşfetmek üzere ücretsiz araçlar sunar.
