Ana içeriğe geç

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ı oku

XML

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ı oku

JSON ve XML karşılaştırması

ÖzellikJSONXML
SözdizimiSüslü parantezler, köşeli parantezler ve anahtar-değer çiftleriAçılış ve kapanış etiketleri olan iç içe elemanlar
BoyutKompaktDaha uzun: her eleman iki kez adlandırılır
Veri tipleriMetin, sayı, boolean, null, nesne, diziBir şema aksini söylemedikçe hepsi metin
Nitelikler ve namespace'lerYokİkisi de var; üst veri ve söz dağarcıklarını karıştırmak için
Yorumlarİzin verilmezİzin verilir: <!-- … -->
ŞemalarJSON Schema, isteğe bağlıXSD ve DTD, yaygın olarak kullanılır
Tipik kullanımlarREST API'leri, yapılandırma, loglarSOAP, 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

JSONtext
{
  "order": {
    "id": 1042,
    "currency": "EUR",
    "items": [
      { "sku": "TEA-01", "quantity": 2 },
      { "sku": "MUG-07", "quantity": 1 }
    ]
  }
}
XMLtext
<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.

Daha fazla

Ayarlar