Je pensais que XML est très portable et peut être utilisé comme une mini base de données. J'ai vu XML utilisé partout. Je vois même de grandes entreprises passer au JSON . Même Microsoft a intégré la prise en charge de JSON. Qu'est-ce que tout le battage médiatique sur JSON?
155
Réponses:
Fondamentalement, parce que JSON est reconnu nativement par JavaScript, il est vraiment léger, minimaliste et hautement portable car il ne repose que sur deux structures fondamentales:
la source
XML ne commence vraiment à briller que lorsque vous commencez à mélanger différents schémas d'espacement de noms. Ensuite, vous voyez JSON commencer à tomber, mais si vous avez juste besoin d'un format de sérialisation pour vos données, JSON est plus petit, plus léger, plus lisible par l'homme et généralement plus rapide que XML.
la source
Je trouve que l'un des grands avantages de JSON par rapport à XML est que je n'ai pas à décider comment formater les données. Comme certains l'ont montré, il existe de nombreuses façons de créer même des structures de données simples en XML - sous forme d'éléments, de valeurs d'attributs, etc. un gâchis.
XML peut avoir ses mérites, mais pour l'échange de données de base, JSON est beaucoup plus compact et direct. En tant que développeur Python, il n'y a pas de discordance d'impédance entre les types de données simples en JSON et en Python. Donc, si j'écrivais un gestionnaire côté serveur pour une requête AJAX qui posait des questions sur les conditions de neige pour une station de ski particulière, je créerais un dictionnaire comme suit:
Lorsqu'elle est traduite via JSON (en utilisant une bibliothèque telle que 'simplejson' pour Python), la structure JSON résultante semble presque identique (sauf en JSON, les booléens sont en minuscules).
Le décodage de cette structure ne nécessite qu'un analyseur JSON, que ce soit pour Javascript ou Objective-C pour une application iPhone native ou C # ou un client Python. Les flottants seraient interprétés comme des flottants, les chaînes comme des chaînes et les booléens comme des booléens. En utilisant la bibliothèque 'simplejson' en Python, une
simplejson.loads(some_json_string)
instruction me redonnerait une structure de données complète comme je viens de le faire dans l'exemple ci-dessus.Si j'écrivais du XML, je devrais décider de faire des éléments ou des attributs. Les deux éléments suivants sont valides:
Donc, non seulement je dois penser aux données que je pourrais vouloir envoyer au client, mais je dois aussi réfléchir à la façon de les formater. XML, bien que plus simple que SGML ordinaire en étant plus strict avec ses règles, offre encore trop de façons de penser à ces données. Ensuite, je devrais commencer à le générer. Je ne pouvais pas simplement prendre un dictionnaire Python (ou une autre structure de données simple) et dire "allez faire de vous-même dans mon XML". Je ne pouvais pas recevoir un document XML et dire immédiatement "allez vous transformer en objets et structures de données" sans écrire un analyseur personnalisé, ou sans exiger la surcharge supplémentaire de XML Schema / Relax NG et d'autres problèmes similaires.
En bref, il est beaucoup plus facile et beaucoup plus direct d'encoder et de décoder des données en JSON, en particulier pour les échanges rapides. Cela peut s'appliquer davantage aux personnes issues d'un contexte de langage dynamique, car les types de données de base (listes, dictionnaires, etc.) intégrés à JavaScript / JSON correspondent directement aux types de données identiques ou similaires en Python, Perl, Ruby, etc.
la source
Les performances de JSON ne sont pas très différentes de celles de XML pour la plupart des cas d'utilisation, JSON n'est pas bien adapté et lisible pour les structures profondément imbriquées ... vous allez rencontrer]]]}], ce qui rend le débogage difficile
la source
C'est léger par rapport au XML. Si vous avez besoin d'évoluer, réduisez vos besoins en bande passante!
Comparez JSON
vers XML:
la source
Juste une anecdote de ma propre expérience personnelle:
J'ai écrit un petit répertoire Javascript, d'abord avec les données en XML, puis je l'ai adapté pour utiliser JSON afin que je puisse les exécuter côte à côte et comparer les vitesses avec Firebug. Le JSON a fini par être environ 3 fois plus rapide (350-400 ms contre 1200-1300 ms pour afficher toutes les données). De plus, comme d'autres l'ont noté, le JSON est beaucoup plus facile pour les yeux et la taille du fichier était bien 25% plus petite en raison du balisage plus léger.
la source
Avec les attributs, XML est sympa. Mais pour une raison quelconque, le XML fait maison est généralement composé à 100% d'éléments et moche.
la source
La consommation facile par JavaScript peut être l'une des raisons.
la source
JSON est idéal pour la consommation de données dans les applications Web à partir de services Web en raison de sa taille et de sa facilité d'utilisation, en particulier en raison de la prise en charge intégrée de JavaScript . Imaginez la surcharge de calcul pour analyser un fragment xml par rapport à la recherche instantanée dans JSON.
Un très bon exemple est JSON-P. Vous pouvez récupérer des données à partir d'un service Web enveloppé dans un appel de fonction de rappel, comme
my_callback({"color": "blue", "shape":"square"});
dans une<script>
balise générée dynamiquement afin que les données puissent être directement consommées dans la fonctionmy_callback()
. Il n'y a aucun moyen de se rapprocher de cette commodité en utilisant XML.XML serait le format de choix pour les documents volumineux, où vous disposez d'un cadre de rendu de pages de données dans plusieurs formats à l'aide de XSLT. XML peut également être utilisé avec les fichiers de configuration d'application pour la lisibilité parmi de nombreuses autres utilisations.
la source
Personne ici n'a mentionné le principal avantage de XML: les règles de validation (DTD, XSD). Mes conclusions, après avoir utilisé les deux:
Bien sûr, json-schema est en cours de développement, mais vous ne trouverez aucun support intégré pour celui-ci.
Je suis fan des deux, ils ont juste des atouts différents.
la source
Maintenant qu'il existe des encodeurs et décodeurs JSON pour la plupart des langages, il n'y a aucune raison de NE PAS utiliser JSON pour des utilisations où cela a du sens (et c'est probablement 90% des cas d'utilisation pour XML).
J'ai même entendu parler de chaînes JSON utilisées dans de grandes bases de données SQL pour faciliter les changements de schéma.
la source
Honnêtement, il n'y a pas tellement de différence entre JSON et XML dans le fait qu'ils peuvent représenter tous les types de données. Cependant, XML est syntaxiquement plus volumineux que JSON et cela le rend plus lourd que JSON.
la source
JSON n'a pas de discordance d'impédance avec la programmation JavaScript. JSON peut contenir des entiers, des chaînes, des listes, des tableaux. XML n'est que des éléments et des nœuds qui doivent être analysés en entiers et ainsi de suite avant de pouvoir être consommés.
la source
Les deux sont excellents et très portables. Cependant, JSON a gagné en popularité car il sérialise en moins de caractères dans la plupart des cas (ce qui se traduit par un délai de livraison plus rapide) et comme il correspond à la syntaxe de l'objet JavaScript, il peut être directement traduit en un objet en mémoire, ce qui rend Ajax beaucoup plus facile à mettre en place.
XML est toujours excellent. JSON est juste le "dernier et meilleur" par rapport au XML.
la source
Facilement analysé par JavaScript et il est léger (un document en JSON est plus petit qu'un document XML contenant les mêmes données.)
la source
JSON est effectivement du JavaScript sérialisé en ce sens que vous pouvez évaluer (aJsonString) directement dans un objet JavaScript. À l'intérieur d'un navigateur, il est évident que JSON est parfaitement adapté à JavaScript. Dans le même temps, JavaScript est un langage dynamique très faiblement typé et ne peut pas tirer parti nativement de toutes les informations de type spécifiques disponibles contenues dans un document Xml / Xsd. Ces métadonnées supplémentaires (ce qui est idéal pour l'interopérabilité) est un obstacle à JavaScript, ce qui le rend plus fastidieux et plus complexe à utiliser.
Taille vs performances
Si vous êtes dans un navigateur, JSON est plus rapide à sérialiser / désérialiser car il est plus simple, plus compact et surtout pris en charge nativement. J'ai quelques benchmarks de base de données Northwind disponibles comparant la taille et la vitesse entre les différents sérialiseurs disponibles. Dans la bibliothèque de classes de base, le sérialiseur XML DataContract de Microsoft est plus de 30% plus rapide que leur JSON. Bien que cela ait plus à voir avec l'effort que Microsoft a déployé dans son sérialiseur XML, j'ai pu développer un JsonSerializer qui est plus de 2,6 fois plus rapide que son XML. Quant aux charges utiles basées sur les benchmarks, il semble que XML soit à peu près plus de 2xla taille de JSON. Cependant, cela peut rapidement exploser si votre charge utile XML utilise de nombreux espaces de noms différents dans le même document.
la source
XML est une huile de serpent gonflée dans la plupart des situations. JSON vous offre la plupart des avantages sans gonflement.
la source
Un avantage majeur autre que ceux mentionnés ici. Pour les mêmes données, il existe plusieurs façons de les représenter sous forme de fichier XML, mais une seule façon avec JSON, supprime l'ambiguïté :)
la source
{"colors":["red","green","blue"],"systems":["windows","mac"]}
vs{"entries":[{"type":"color","value":"red"},{"type":"system","value":"mac"}]}
Je ne suis de loin pas un expert, mais parmi les différentes entreprises pour lesquelles j'ai travaillé, nous utilisons généralement XML dans de petits environnements de données ou des valeurs de configuration (web.config est un excellent exemple).
Lorsque vous disposez de grandes quantités de données, vous souhaiterez généralement créer un rapport sur ces données. Et XML n'est pas une excellente source de rapports. Dans le grand schéma des choses, il semble qu'une base de données transactionnelle soit plus facile à rapporter / rechercher que XML.
Est-ce que ça a du sens? Comme je l'ai dit plus haut, je ne suis pas un expert mais d'après mon expérience, cela semble être le cas. De plus, je pense que Microsoft a intégré le support JSON en raison de la vague de développeurs passant aux actions côté client ou scriptées pour améliorer les visuels de l'interface utilisateur ( Ajax ) et Ajax de Microsoft n'a pas été autant utilisé que d'autres bibliothèques comme jQuery et MooTools ( YUI de Yahoo est également dans ce mélange) en raison de leur belle intégration d'objets sérialisables à l'aide de JSON.
Je me retrouve à écrire du code implémentant maintenant le sérialiseur JSON dans mon code VB. C'est bien trop facile et du point de vue de la mise à niveau / modification, vous ne pouvez pas le battre. C'est la manière de Microsoft de nous garder accro au VS je suppose. J'ai récemment converti une application d'entreprise en utilisant Ajax (via jQuery) et en utilisant le format JSON. Cela a pris environ 2 semaines pour le faire. Je remercie en fait Microsoft de l'avoir intégré car sans lui, j'aurais dû écrire pas mal de code supplémentaire.
la source