Yanıtlar:
Bunlardan herhangi biri doğru olduğunda XML'i JSON yerine tercih edin:
Tüm bunlar doğru olduğunda JSON'u XML üzerinden tercih edin:
XML kullanmam gerekmedikçe JSON kullanıyorum. Anlamak daha basittir ve (daha az yapılandırma ek yükü gerektirdiğinden), kütüphaneler bağlamınızda kullanılabilirse ve şimdi oldukça yaygın olanları okumak ve yazmak için programlamak daha kolaydır.
Amazon kataloglarını bir web hizmeti olarak ilk ortaya çıkardıklarında, hem JSON hem de XML sundular. Uygulayıcıların% 90'ı JSON'u seçti.
Zaten istemci tarafında javascript yaptığınız özel durumunuz göz önüne alındığında, aşağıdaki nedenlerden dolayı JSON ile giderdim:
JSON javascript'e özgü olduğundan, istemci tarafına daha az kod yazmanız gerekir - JSON dizesini eval()
(veya daha iyisi JSON.parse()
) sadece kullanabilirsiniz ve kullanabileceğiniz bir nesne elde edin.
Aynı zamanda JSON'u istemci tarafında değerlendirmek daha verimli ve dolayısıyla daha hızlı olacaktır.
JSON serileştirmesi XML'den daha kısa dizeler üretir. JSON kullanılması, kablo üzerinden geçen veri miktarını azaltır ve bu bakımdan performansı artırır.
Daha fazla okuma: http://www.subbu.org/blog/2006/08/json-vs-xml
eval()
hayır-hayır JSON bir Big ing?
XML vs JSON relm'de karşılaştığım bazı şeyler:
JSON aşağıdakiler için çok iyidir
Bu, bir diziyi veya iç içe diziyi sevme eğiliminde olduğu anlamına gelir. Ancak JSON her ikisini de eksik
Dolayısıyla, iki veya daha fazla JSON hizmetini birleştirirseniz, potansiyel ad alanı çakışmaları olabilir. JSON, deneyimlerimle veri alışverişinde XML'in kullanılabileceği şeylerin yaklaşık% 90'ı için kullanılabileceği söyleniyor.
Genellikle JSON daha kompakttır ve ayrıştırılması daha hızlıdır.
Aşağıdaki durumlarda XML'i tercih edin:
(Neredeyse) XML'in önemli bir örneği: HTML parçacıkları gönderirken tespit etmeye çalışın ham veri göndermekten daha faydalıdır. AH AH basit uygulamalarda harikalar yaratabilir, ancak sıklıkla gözden kaçırılır. Genellikle bu stil, bir sunucunun, web sayfasında işlenmeden HTML satır parçacıkları gönderdiğini varsayar.
Genellikle AHAH vakalarında CSS, snippet'lere görsel olarak masaj yapmak ve snippet'in ilgili bölümlerini kullanıcıya özgü veya uygulamaya özgü ayarları kullanarak gizlemek / göstermek gibi basit koşulların uygulanması için maksimuma çıkarılır.
JSON ayrıştırmak kolay ve hızlıdır. XML ayrıştırılması biraz daha zordur ve ayrıştırılması ve aktarılması daha yavaştır (çoğu durumda).
JQuery kullandığınız için, JSON kullanmanızı öneririm: jQuery JSON verilerini alabilir ve otomatik olarak bir Javascript nesnesine dönüştürebilir. Aslında, eval kullanarak JSON verilerini bir Javascript nesnesine dönüştürebilirsiniz . XML sizin tarafınızdan manuel olarak dönüştürülmelidir (bunun Javascript'te nasıl çalıştığını bilmiyorum, ancak XML kitaplıklarını kullandığım çoğu dilde zor / daha can sıkıcı).
Her konuda bazı avantajları ve dezavantajları yanı sıra bir özet sağlayan web protokolleri (yani SOAP, XML, JSON, REST, POX, vb) tarihini detaylandıran konuda bir blog yazısı var: http://www.servicestack.net / mythz_blog /? p = 154
Aslında dinamik (JSON) ve statik (XML) diller arasındaki farkları karşılaştırarak XML ve JSON arasında birçok benzerlik çizebileceğinizi düşünüyorum.
Temel olarak XML, isteğe bağlı olarak eşlik eden bir şema (XSD veya DTD) ile doğrulanabilen daha katı, daha katı bir serileştirme biçimidir. XSD'ler oldukça ayrıntılıdır ve Tarihler, Zamanlar, Numaralandırmalar, Kullanıcı Tanımlı Türler ve hatta Tür devralma gibi birçok farklı türü tanımlamanızı sağlar. SOAP, web hizmetlerinizi tanımlamak için standartlaştırılmış bir yol sağlayan XML özellik kümesinin üzerine etkili bir şekilde oluşturulur. örneğin, türler ve işlemler) bir WSDL aracılığıyla. WSDL spesifikasyonunun ayrıntı ve karmaşıklığı, geliştirmenin daha sıkıcı olabileceği anlamına gelir, ancak aynı zamanda sizin için çok daha fazla araç vardır ve çoğu modern dil, bazı yükleri alarak müşteri proxy'lerinizi oluşturmak için otomatik araçlar sağlar harici servislerle birlikte çalışmayı denerken kapalı.
Sık sık değişikliğe tabi olmayan, iyi tanımlanmış bir 'kurumsal hizmetiniz' varsa veya web hizmetinize birçok farklı dilden erişilmesi gerekiyorsa, web hizmetleriniz için XML kullanmanızı öneririm.
Tüm faydaları için XML de dezavantajları ile birlikte gelir. Yazılan genişletilebilir bir biçim sağlamak için ad alanlarına güvenir ve aynı belgedeki öznitelikleri ve öğeleri belirtmenizi sağlar. Bir belgede farklı ad alanlarına sahip olmak, verileri çıkartmak için bir Xml Parser'ı kullanırken çok fazla zaman alır, ayrıca almak / çaprazlamak istediğiniz her öğenin ad alanını sağlamanız gerekir. Ayrıca, yükü olması gerekenden daha ayrıntılı hale getirir. Öğelerin yanı sıra nitelikleri de çıkarma seçeneğine sahip olmak, sınıflarınızın bir XML belgesiyle iyi eşleşmediği anlamına gelir. Bu özellikler tek başına, çoğu dil için çalışmayı daha sıkıcı ve zahmetli hale getiren programa uygun değildir.
Öte yandan JSON, çok gevşek yazıldığından ve yalnızca temel türler için basit bir desteğe sahip olduğu için XML'in tam tersidir: Number, Bool, string, Objects and Arrays. Diğer her şey aslında bir dizeye sığmalıdır. Dil sınırları arasında iletişim kurmaya çalışırken bu harika değildir, çünkü daha spesifik türleri desteklemek istiyorsanız bazı bant dışı standart dışı belirtimlere uymanız gerekecektir. Baş üzerindeki sınırlı özellik kümesi çoğu dilde iyi bir programatik geçme yapan - ve JSON dize edilebilir olarak mükemmel JavaScript için uygundur eval'ed JavaScript nesnesine doğrudan.
Boyut ve Performans
Microsofts XML ve JSON uygulamaları arasındaki boyut ve hızı karşılaştıran bazı northwind veritabanı karşılaştırmaları var . Temelde XML, JSON'un boyutunun 2 katından fazladır, ancak aynı zamanda Microsoft, JSON'larından% 30'dan daha hızlı olduğu için XML DataContractSerializer'ı optimize etmek için çok çaba sarf ediyor gibi görünüyor. Görünüşe göre boyut ve performans arasında bir denge kurmanız gerekiyor. Bu gerçeğinden memnun değilim , şimdi MS'in XML'sinden 2.6x daha hızlı olan kendi hızlı JsonSerializer'ımı yazmaya karar verdim - her iki dünyanın en iyisi :).
JSON rotasını izlediğinizde, XML'in 10 yıl önce karşılaştığı sorunlarla aynı sorunla karşılaşırsınız:
İki farklı kaynaktan alınan verileri bir JSON paketine karıştırmak, eleman etiketlerinin birbirine çarpmasına neden olabilir. Ambalaj fişini ve faturayı karıştırın ve aniden Kimden adresi oldukça farklı bir şey anlamına gelebilir. Bu yüzden XML'in ad alanları vardır .
Farklı JSON yapıları arasında dönüştürme, sıralı kod yazmayı gerektirir. Verileri haritalamanın daha açıklayıcı bir yolu işi kolaylaştırır. Bu yüzden XML'de XSLT vardır .
Bir JSON paketinin yapısını (alanları, veri türleri vb.) Tanımlamak, insanların hizmetlerinize bağlanması için gereklidir. Bunun için bir meta veri diline sahip olmak önemlidir. Bu yüzden XML'in Şemaları vardır .
İki eşzamanlı istemci-sunucu görüşmesi yürütmek özen gösterir. Sunucuya iki soru sorar ve bir cevap alırsanız, hangi soruyu cevapladığını nereden biliyorsunuz? Bu yüzden XML WS-Korelasyonuna sahiptir .
Http://json.org/xml.html adresindeki ilk satırdan
Genişletilebilir İşaretleme Dili (XML), Standart Genelleştirilmiş İşaretleme Dili'nden (SGML) türetilmiş bir metin biçimidir. SGML ile karşılaştırıldığında XML basittir. HyperText İşaretleme Dili (HTML), karşılaştırıldığında, daha da basittir. Yine de, HTML üzerine iyi bir referans kitabı bir inç kalınlığındadır. Bunun nedeni, belgelerin biçimlendirilmesi ve yapılandırılmasının karmaşık bir iş olmasıdır. . . .
Açıkçası JSON daha hızlıdır, ancak okunmasının zor olduğu daha da açıktır. Hız için JSON kullanın, insan etkileşimi olacaksa XML kullanın ve hızı feda edebilirsiniz.
Her türlü yapılandırma, veri değişimi veya mesajlaşma için JSON kullanıyorum. XML'i yalnızca başka nedenlerle veya belge benzeri verileri anlamsal olarak işaretlemem gerektiğinde kullanıyorum.
Hem XML hem de JSON Microsoft tarafından desteklenir. XML değişmezleri VB 9'daki yeni harika özellikti. ASP.NET 4.0'ın gelecek sürümünde JSON, istemci tarafı şablonlamasının gücünden yararlanmak için bir zorunluluktur.
Sormuş olduğunuz sorudan, jQuery ile veya jQuery olmadan istemci tarafında işlem yapmak kolay olduğu için JSON sizin için bir seçim olabilir.
JSON kullanma
XML kullanma
Bu makaleyi dijital pazarda gerçekten ilginç buldum .
Makaleden bazı bölümler aşağıda alıntılanmıştır.
JSON pros hakkında:
Etmek istediğiniz tek şey atomik değerler veya atomik değerlerin listeleri veya karmalarıysa, JSON, XML'in birçok avantajına sahiptir: İnternet üzerinden doğrudan kullanılabilir, çok çeşitli uygulamaları destekler, JSON'u işlemek için programlar yazmak kolaydır, isteğe bağlı birkaç özelliği vardır, insan tarafından okunabilir ve makul derecede açıktır, tasarımı resmi ve özlüdür, JSON belgelerinin oluşturulması kolaydır ve Unicode kullanır. ...
XML artıları hakkında:
XML, yapılandırılmamış verilerin tam zenginliği ile oldukça iyi ilgilenir. Ölümü neşeyle web API tasarımcılarının bir kadrosu tarafından kutlansa bile XML'in geleceği hakkında endişelenmiyorum.
Ve "Sana söylemiştim!" masamda bir token. Ben daha zengin API geliştirmek istendiğinde JSON millet ne yaptığını görmek için sabırsızlanıyoruz. Daha az iyi yapılandırılmış veri alışverişi yapmak istediklerinde, JSON'a çekecekler mi? JSON için zaman zaman bir şema dilinden bahsediyorum, diğer diller takip edecek mi? ...
Hızlı kurallar:
Açıklama:
JSON'un tek rolü, çoğu programlama dilinde yaygın olan veri türlerini kullanarak nesneye yönelik verileri serileştirmektir: listeler , karmalar ve skalerler ve bu amaçla gerçekten yenilmez veya geliştirilemez. "JSON'un sürüm numarası yoktur [olarak] JSON dilbilgisinde herhangi bir değişiklik yapılması beklenmemektedir". - Douglas Crockford (Bunu mükemmel bir şekilde yaptığının işareti olarak yenemezsin)
XML bir zamanlar veri değiştirme formatı olarak satıldı, ancak en yaygın iki kullanım durumunu göz önünde bulundurun: Eşzamansız istemci-sunucu iletişimi (AJAX) - JSON, XML'in yerini tamamen aldı (X gerçekten bir J olmalı) ve web hizmetleri : JSON, XML'i yedek bir alternatif haline getirdi.
XML için yaygın olarak kullanılan bir başka şey de, programlar için insan yazılabilir / okunabilir (?) Veri dosyalarıydı, ancak burada da bir JSON süper kümesi olan YAML'de daha özlü, daha program dostu, daha insan dostu bir biçime sahipsiniz.
Veri temsili için JSON, XML'i her yerde yener. XML için geriye ne kaldı? Amaçlanan karışık içerikli belge gösterimi .
Çoğu yeni web teknolojisi JSON kullanarak çalışır, bu yüzden JSON kullanmak için kesinlikle iyi bir neden. Büyük bir avantaj, XML'de aynı bilgileri birden çok farklı şekilde temsil edebilmenizdir, bu da JSON'da daha basittir.
Ayrıca JSON IMHO, XML'den çok daha net, bu da benim için net bir avantaj sağlıyor. .NET ile çalışıyorsanız, Json.NET JSON ile çalışmanıza yardımcı olacak açık bir kazanandır.