Réponses:
Privilégiez XML par rapport à JSON lorsque l'un de ces éléments est vrai:
Privilégiez JSON par rapport à XML lorsque tout cela est vrai:
J'utilise JSON sauf si je suis obligé d'utiliser XML. C'est plus simple à comprendre et (parce que cela nécessite moins de frais de configuration), il est plus facile de programmer pour la lecture et l'écriture si les bibliothèques sont disponibles dans votre contexte, et elles sont maintenant assez omniprésentes.
Lorsque Amazon a exposé ses catalogues pour la première fois en tant que service Web, ils ont proposé à la fois JSON et XML. Quelque chose comme 90% des implémenteurs ont choisi JSON.
Compte tenu de votre cas spécifique où vous faites déjà du javascript côté client, j'irais avec JSON pour ces raisons:
Étant donné que JSON est natif de javascript, vous devrez écrire moins de code côté client - Il suffit eval()
(ou, mieux encore, JSON.parse()
) de la chaîne JSON et d'obtenir un objet que vous pouvez utiliser.
Dans le même temps, l'évaluation de JSON côté client sera plus efficace et donc plus rapide.
La sérialisation JSON produit des chaînes plus courtes que XML. L'utilisation de JSON réduira la quantité de données exécutées sur le réseau et améliorera les performances à cet égard.
Voici quelques lectures supplémentaires: http://www.subbu.org/blog/2006/08/json-vs-xml
eval()
ce que JSON n'est pas un grand non-non?
Quelques autres choses que j'ai rencontrées dans le relm XML vs JSON:
JSON est très bon pour
Ce qui signifie qu'il a tendance à aimer un tableau ou un tableau imbriqué. Cependant, JSON manque les deux
Donc, si vous deviez combiner deux ou plusieurs services JSON, il pourrait y avoir des conflits d'espace de noms potentiels. Cela étant dit, JSON peut être utilisé pour environ 90% des mêmes choses que XML peut être utilisé lors de l'échange de données selon mon expérience.
En général, JSON est plus compact et plus rapide à analyser.
Préférez XML si:
Un cas important de (presque) XML: essayer de détecter lors de l'envoi d'extraits de code HTML est plus avantageux que d'envoyer des données brutes. AH AH peut faire des merveilles dans des applications simples, mais souvent négligées. Habituellement, ce style suppose qu'un serveur envoie des extraits de code HTML qui seront incorporés dans la page Web sans traitement.
Habituellement, dans les cas AHAH, CSS est exploité au maximum pour masser visuellement les extraits de code et implémenter des conditions simples comme le masquage / l'affichage des parties pertinentes de l'extrait à l'aide de paramètres spécifiques à l'utilisateur ou à l'application.
JSON est facile et plus rapide à analyser. XML est un peu plus difficile à analyser et est plus lent à analyser et à transférer (dans la plupart des cas).
Puisque vous utilisez jQuery, je suggère d'utiliser JSON: jQuery peut récupérer des données JSON et les convertir automatiquement en un objet Javascript. En fait, vous pouvez convertir des données JSON en un objet Javascript en utilisant eval . XML devrait être transversé manuellement par vous (je ne sais pas comment cela fonctionne en Javascript, mais c'est difficile / plus ennuyeux dans la plupart des langages avec lesquels j'ai utilisé des bibliothèques XML).
JSON est toujours préférable en termes de traitement que le navigateur client doit effectuer pour analyser les données. En outre, JSON est un format d'échange de données léger.
L'analyse XML consomme toujours beaucoup de ressources du navigateur et doit être évitée autant que possible, sauf indication contraire.
J'ai un article de blog sur le sujet détaillant l'historique des protocoles web (ie SOAP, XML, JSON, REST, POX, etc.) fournissant un résumé ainsi que quelques avantages et inconvénients de chacun: http://www.servicestack.net / mythz_blog /? p = 154
Je pense en fait que vous pouvez dessiner de nombreuses similitudes entre XML et JSON en comparant les différences entre les langages dynamiques (JSON) et statiques (XML).
Fondamentalement, XML est un format de sérialisation plus strict et plus rigide qui peut éventuellement être vérifié avec un schéma d'accompagnement (qui est soit un XSD soit un DTD). Les XSD sont assez élaborés et vous permettent de décrire de nombreux types différents, par exemple les dates, les heures, les énumérations, les types définis par l'utilisateur et même l'héritage de types, etc. SOAP s'appuie efficacement sur l'ensemble de fonctionnalités XML en fournissant une manière standardisée de décrire vos services Web ( par exemple types et opérations) via un WSDL. La verbosité et la complexité de la spécification WSDL signifient qu'elle peut être plus fastidieuse à développer, mais en même temps, il y a beaucoup plus d'outils à votre disposition et la plupart des langages modernes fournissent des outils automatisés pour générer vos proxys client en prenant une partie du fardeau désactivé lorsque vous essayez d'interagir avec des services externes.
Je recommanderais toujours d'utiliser XML pour vos services Web si vous avez un «service d'entreprise» bien défini qui n'est pas soumis à des changements fréquents ou si votre service Web doit être accessible à partir de nombreuses langues différentes.
Malgré tous ses avantages, XML présente également des inconvénients. Il s'appuie sur des espaces de noms afin de fournir un format extensible typé et vous permet de spécifier des attributs et des éléments dans le même document. Avoir des espaces de noms différents dans un même document signifie beaucoup de temps lorsque vous utilisez un analyseur Xml pour extraire des données, vous devrez également fournir l'espace de noms de chaque élément que vous souhaitez récupérer / parcourir. Il extrapole également la charge utile, ce qui la rend plus verbeuse que nécessaire. Avoir la possibilité de générer des attributs ainsi que des éléments signifie que vos classes ne correspondent pas parfaitement à un document XML. Ces fonctionnalités à elles seules en font un programme mal adapté à la plupart des langages, ce qui le rend plus fastidieux et compliqué à utiliser.
JSON, d'un autre côté, est complètement l'opposé de XML à bien des égards car il est très peu typé et ne prend en charge que les types de base: Number, Bool, string, Objects et Arrays. Tout le reste doit essentiellement tenir dans une chaîne. Ce n'est pas génial lorsque vous essayez de communiquer au-delà des frontières linguistiques, car vous devrez vous conformer à certaines spécifications non standard hors bande si vous souhaitez prendre en charge des types plus spécifiques. Sur le plan positif, son ensemble de fonctionnalités limité convient parfaitement à la plupart des langages - et convient parfaitement à JavaScript, car une chaîne JSON peut être évaluée directement dans un objet JavaScript.
Taille et performances
J'ai quelques benchmarks de base de données Northwind disponibles comparant la taille et la vitesse entre les implémentations Microsoft XML et JSON. Fondamentalement, XML fait plus de deux fois la taille de JSON, mais en même temps, il semble que Microsoft a déployé beaucoup d'efforts pour optimiser son DataContractSerializer XML car il est plus de 30% plus rapide que son JSON. Il semble que vous deviez faire un compromis entre la taille et la performance. Pas content de ce fait, j'ai décidé d'écrire mon propre JsonSerializer rapide qui est maintenant 2,6x plus rapide que celui de MS XML - donc le meilleur des deux mondes :).
Je choisirais XML plutôt que JSON si je dois valider le bloc de données entrantes, car XML prend en charge nativement cela via XSD.
Lorsque vous suivez la route JSON, vous rencontrez les mêmes problèmes que XML rencontrés il y a 10 ans:
Le mélange de données provenant de deux sources différentes dans un seul paquet JSON peut provoquer le choc des étiquettes d'élément. Mélangez un bon de livraison et une facture, et soudain, l'adresse d'expédition peut signifier quelque chose de tout à fait différent. C'est pourquoi XML a des espaces de noms .
La conversion entre différentes structures JSON nécessiterait l'écriture de code banal. Une manière plus déclarative de mapper les données faciliterait la tâche. C'est pourquoi XML a XSLT .
La description de la structure d'un paquet JSON (ses champs, ses types de données, etc.) est nécessaire pour permettre aux utilisateurs de se connecter à vos services. Il est essentiel d'avoir un langage de métadonnées pour cela. C'est pourquoi XML a des schémas .
Il faut faire preuve de prudence lors de deux conversations client-serveur simultanées. Si vous posez deux questions au serveur et obtenez une réponse, comment savoir à quelle question il répond? C'est pourquoi XML a WS-Correlation .
À partir de la première ligne à http://json.org/xml.html
Extensible Markup Language (XML) est un format de texte dérivé du Standard Generalized Markup Language (SGML). Comparé à SGML, XML est simple. Le langage HTML (HyperText Markup Language), par comparaison, est encore plus simple. Même ainsi, un bon livre de référence sur HTML mesure un pouce d'épaisseur. En effet, le formatage et la structuration des documents sont une entreprise compliquée. . . .
Il est clair que JSON est plus rapide, mais il est encore plus clair qu'il est difficile à lire. Utilisez JSON pour la vitesse, utilisez XML s'il y aura une interaction humaine et vous pouvez sacrifier la vitesse.
J'utilise JSON pour tout type de configuration, d'échange de données ou de messagerie. J'utilise XML uniquement si je dois le faire pour d'autres raisons ou pour marquer sémantiquement des données de type document.
XML et JSON sont pris en charge par Microsoft. Les littéraux XML étaient la nouvelle fonctionnalité intéressante de VB 9. Dans la prochaine version d'ASP.NET 4.0, JSON est indispensable pour tirer parti de la puissance de la création de modèles côté client.
D'après la question que vous avez posée, il semble que JSON pourrait être le choix pour vous car il est facile à traiter côté client avec ou sans jQuery.
Utilisation de JSON
Utilisation de XML
J'ai trouvé cet article au bazar numérique vraiment intéressant.
Certaines parties de l'article sont citées ci-dessous.
À propos des pros JSON:
Si vous ne voulez transmettre que des valeurs atomiques ou des listes ou des hachages de valeurs atomiques, JSON présente de nombreux avantages du XML: il est facilement utilisable sur Internet, prend en charge une grande variété d'applications, il est facile d'écrire des programmes pour traiter JSON, il a peu de fonctionnalités optionnelles, il est lisible par l'homme et raisonnablement clair, sa conception est formelle et concise, les documents JSON sont faciles à créer et il utilise Unicode. ...
À propos des pros XML:
XML traite remarquablement bien la richesse des données non structurées. Je ne suis pas du tout inquiet pour l'avenir de XML, même si sa mort est joyeusement célébrée par un groupe de concepteurs d'API Web.
Et je ne peux pas résister à un "Je vous l'ai dit!" jeton dans mon bureau. J'ai hâte de voir ce que font les gens JSON quand on leur demande de développer des API plus riches. Lorsqu'ils veulent échanger des données moins bien structurées, vont-ils les utiliser dans JSON? Je vois des mentions occasionnelles d'un langage de schéma pour JSON, d'autres langages suivront-ils? ...
Règles rapides:
Explication:
Le seul rôle de JSON est de sérialiser les données orientées objet en utilisant les types de données communs à la plupart des langages de programmation: listes , hachages et scalaires , et dans ce but, il ne peut vraiment pas être battu ou amélioré. À savoir "JSON n'a pas de numéro de version [car] aucune révision de la grammaire JSON n'est prévue". - Douglas Crockford (Je ne peux pas battre cela comme un signe que vous faites parfaitement votre travail)
XML était autrefois vendu comme format d'échange de données, mais considérez les deux cas d'utilisation les plus courants: Communication client-serveur asynchrone (AJAX) - JSON a pratiquement entièrement remplacé XML (le X devrait vraiment être un J) et les services Web : JSON a fait de XML une alternative redondante.
L'autre chose pour laquelle XML a été largement utilisé était les fichiers de données inscriptibles / lisibles par l'homme (?) Pour les programmes, mais ici aussi vous avez un format plus concis, plus convivial pour les programmes et plus convivial dans YAML, un sur-ensemble JSON.
Donc, pour la représentation des données, JSON bat le XML dans tous les domaines. Que reste-t-il alors pour XML? Représentation de documents à contenu mixte, ce à quoi elle était destinée .
La plupart des nouvelles technologies Web fonctionnent avec JSON, donc définitivement une bonne raison d'utiliser JSON. Un grand avantage est que dans XML, vous pouvez représenter les mêmes informations de plusieurs manières différentes, ce qui en JSON est plus simple.
JSON IMHO est également beaucoup plus clair que XML, ce qui en fait pour moi un avantage évident. Et si vous travaillez avec .NET, Json.NET est un gagnant clair pour vous aider à travailler avec JSON.