Yan yana
JSONvsXML
JSON ile XML arasındaki fark nedir?
Güncellendi 2 dk okuma7 fark
Kısaca
İkisi de yapılandırılmış veriyi metin olarak yazar: JSON daha hafiftir ve nesne ve dizilere karşılık gelir; XML ise nitelikler, namespace'ler ve şemalar ekler.
JSON
JavaScript Object Notation
JSON, yapılandırılmış veriyi anahtar-değer çiftleri ve listelerle saklayıp aktarmaya yarayan, insanın da makinenin de okuyabildiği hafif bir metin biçimidir.
JSON sayfasını okuXML
Genişletilebilir İşaretleme Dili
XML (Extensible Markup Language), kendi tanımladığınız iç içe etiketlerle yapılandırılmış veriyi tutan, insanın ve makinenin okuyabildiği metin biçimidir.
XML sayfasını okuJSON ve XML karşılaştırması
| Özellik | JSON | XML |
|---|---|---|
| Sözdizimi | Süslü parantezler, köşeli parantezler ve anahtar-değer çiftleri | Açılış ve kapanış etiketleri olan iç içe elemanlar |
| Boyut | Kompakt | Daha uzun: her eleman iki kez adlandırılır |
| Veri tipleri | Metin, sayı, boolean, null, nesne, dizi | Bir şema aksini söylemedikçe hepsi metin |
| Nitelikler ve namespace'ler | Yok | İkisi de var; üst veri ve söz dağarcıklarını karıştırmak için |
| Yorumlar | İzin verilmez | İzin verilir: <!-- … --> |
| Şemalar | JSON Schema, isteğe bağlı | XSD ve DTD, yaygın olarak kullanılır |
| Tipik kullanımlar | REST API'leri, yapılandırma, loglar | SOAP, belgeler, SVG, RSS, sektör standartları |
Fark, açıklamalı
JSON veriyi süslü parantezler içinde nesneler, köşeli parantezler içinde diziler ve metin, sayı, boolean ve null değerler olarak yazar. XML ise onu açılış ve kapanış etiketleri olan adlandırılmış elemanlardan oluşan bir ağaç olarak yazar; bu elemanlar <price currency="EUR">9.90</price> örneğindeki gibi nitelikler de taşıyabilir. İkisi de insanların okuyabildiği ve her büyük dilin ayrıştırabildiği düz metindir.
JSON web API'lerinde kazandı, çünkü kısadır ve programların zaten kullandığı veri yapılarına uyar: tek bir çağrı onu bir JavaScript nesnesine ya da bir Python sözlüğüne çevirir. XML daha uzundur, ama yalnızca veri için değil belgeler için de yapıldı: metni işaretlemeyle karıştırır, elemanlarını sırayla tutar, söz dağarcıklarını namespace'lerle ayırır, XSD ile bir şemaya göre doğrulanabilir ve XSLT ile dönüştürülebilir.
Bu yüzden XML başladığı her yerde hâlâ var: SOAP web servisleri, .docx ve .xlsx gibi ofis dosyaları, SVG resimleri, RSS akışları, Android yerleşimleri ve pek çok bankacılık ve kamu standardı. JSON ise REST API'lerine, yapılandırma dosyalarına, NoSQL veritabanlarına ve loglara hâkimdir. JSON'un da bir şema dili vardır, JSON Schema; ama bir şemaya göre doğrulama XML'deki kadar yerleşik bir alışkanlık değildir.
İkisi de doğası gereği daha hızlı ya da daha güvenli değildir, ama her birinin bir tuzağı vardır. Harici entity'leri çözümleyen XML ayrıştırıcıları sunucudaki dosyaları okumak için kötüye kullanılabilir; XXE denen bu saldırı yüzünden bu özellik kapatılmalıdır. JSON'da yorum ve tarih tipi yoktur; bu yüzden tarihler metin olarak, genellikle ISO 8601 biçiminde taşınır.
Hangisini kullanmalısınız?
JSON şu durumlarda doğru seçim:
- Bir web API'si yapıyor ya da çağırıyorsunuz.
- Veri nesnelere, dizilere ve basit değerlere karşılık geliyor.
- Tarayıcılarda ve mobil uygulamalarda boyut ve ayrıştırma hızı önemli.
XML şu durumlarda doğru seçim:
- SOAP ya da pek çok bankacılık biçimi gibi XML gerektiren bir sistemle ya da standartla veri alışverişi yapıyorsunuz.
- İçerik, metinle işaretlemenin karıştığı bir belge.
- Namespace'lere ya da bir şemaya göre katı doğrulamaya ihtiyacınız var.
Aynı sipariş, JSON'da ve XML'de
{
"order": {
"id": 1042,
"currency": "EUR",
"items": [
{ "sku": "TEA-01", "quantity": 2 },
{ "sku": "MUG-07", "quantity": 1 }
]
}
}<order id="1042" currency="EUR">
<items>
<item sku="TEA-01" quantity="2"/>
<item sku="MUG-07" quantity="1"/>
</items>
</order>Sık sorulan sorular
JSON, XML'in yerini aldı mı?
Yeni web API'lerinde büyük ölçüde evet. Ama XML pek çok standardın, belge türünün ve eski sistemin biçimi olmaya devam ediyor ve ortadan kalkmayacak.
JSON ile XML arasında dönüştürme yapılabilir mi?
Genellikle, dikkatle. XML niteliklerinin, karışık metnin ve tekrarlanan elemanların JSON'da tek bir karşılığı yoktur; bu yüzden dönüştürücüler seçim yapar ve gidip gelen bir dönüşüm başladığınız şeyi birebir geri vermeyebilir.
JSON yalnızca JavaScript mi?
JavaScript'in nesne sözdizimine dayanır ve 2019'dan beri her JSON metni aynı zamanda geçerli JavaScript'tir. Ama JSON daha katıdır: anahtarlar çift tırnak ister, yorum, sondaki virgül ve fonksiyon yoktur.