Quels sont les avantages et les inconvénients de json vs xml pour les requêtes ajax? [fermé]
9 réponses
en résumé, JSON (qui peut être pensé à un sous-ensemble de JavaScript) est beaucoup plus mince que XML. Cela a plusieurs effets secondaires positifs
- JSON est plus petit que les correspondants XML
- JSON est plus rapide, i.e. plus simple syntaxe
->
faciliter l'analyse (plus rapide analyse syntaxique)
dans ma réponse originale à cette question, mon point de vue sur JSON était celui de JavaScript, je l'ai considéré comme un parent proche. Mais JSON est quelque chose d'indépendant et JSON.org fait un excellent travail de description de JSON. Il fournit également une bibliothèque de compatibilité pour JavaScript qui ajoute la prise en charge de JSON.parse
et JSON.stringify
lorsqu'il n'est pas pris en charge par les navigateurs.
eval
à l'époque (mi-2009) a été utilisé pour évaluer JavaScript, il pourrait également évaluer JSON, i.e. parse JSON, mais il a été considéré comme dangereux, car il a permis JavaScript arbitraire à exécuter à sa place.
JSON se trouve juste être un très bon ajustement pour les navigateurs et une façon naturelle de faire évoluer la plate-forme en raison de sa relation étroite avec JavaScript.
XML peut être considéré comme ayant une meilleure rigueur en raison du fait que vous pouvez le taper, c'est aussi ces choses qui font qu'il est beaucoup plus lent (c'est aussi un peu verbeux à mon avis). Mais si c'est quelque chose que vous voulez vraiment, vous devriez l'utiliser, XML est également omniprésent.
Je ne vais pas entrer dans un débat sur dynamique ou statiquement typé, mais je vais dire ceci. C'est très facile à ajouter trucs de schéma de données libres et il y a beaucoup de façons de faire de la validation, indépendamment de schéma ou d'aucun schéma.
un avantage du XML que je n'ai pas vu sofar dans la discussion est que le XML peut avoir le schéma. Ceci est d'une grande valeur dans la description de la structure du XML. Pour une structure de données simple, JSON et un peu de texte décrivant ce que vous faites est parfait. En travaillant avec des structures de données plus complexes, ou lorsque le créateur et les consommateurs des données ne sont pas la même équipe, avoir un schéma peut aider la communication beaucoup.
Aussi, pour avoir un schéma signifie que vous pouvez valider vos données, ce qui peut sauver des vies en essayant de déboguer des erreurs complexes ...
Vous avez dans cet article,"la réponse AJAX: XML, HTML, ou JSON?" un grand débat sur ce sujet:
XML
- les Avantages
L'avantage le plus important du XML est qu'il est le format le plus facile à lire pour les autres humains.
Un avantage secondaire est que le XML existe depuis un certain temps et que de nombreux développeurs sont déjà habitués à il. - désavantages
Le JavaScript requis pour insérer les données dans la page HTML est assez verbeux.
JSON
- les Avantages
L'avantage le plus important est que JSON contourne la Politique de même source de JavaScript, si vous importez le fichier JSON comme un nouveau<script>
balise. Voir exemple de Simon Willison pour le gore détail.
JavaScript ne vous permet pas d'accéder aux documents (QU'ils soient XML ou HTML) qui proviennent d'un autre serveur. Cependant, si vous importez un fichier JSON comme étiquette de script, vous contournez ce problème, et toutes les données JSON peuvent être importées dans n'importe quel site web. Cela dépend de vos objectifs d'affaires, que ce soit une bonne ou une mauvaise chose, mais en ce moment c'est le seul format de données qui permet un accès illimité.
Un avantage secondaire est que les scripts pour les données JSON sont légèrement plus simples et légèrement plus en ligne avec le reste du langage JavaScript que les scripts pour les données XML. - désavantages
L'inconvénient le plus important de JSON est que le format est très difficile à lire pour les humains, et que, bien sûr, chaque virgule, citation, et le support doit être exactement à la bonne place. Bien que ce soit également le cas pour XML, la syntaxe complexe de JSON, comme le}}]} à la fin de l'extrait de données, peut effrayer le les débutants et de faire compliqué pour le débogage.
D'après les commentaires, JSON est considéré plus rapide à traiter que XML.
un avantage du XML qui n'a pas encore été mentionné est qu'il est possible d'utiliser XSLT pour extraire des données d'un document XML en utilisant arbitrairement des expressions XPath complexes. Je ne vois pas comment faire ça à JSON. Comment trouveriez-vous tous les objets dans un document JSON qui contiennent un champ "Devise" comme descendant direct, indépendamment de l'endroit où les objets se trouvent dans la structure? En XML avec XSLT / XPath, c'est très facile.
cependant, faire cela dans le navigateur a un prix. Vous rencontrerez des bizarreries spécifiques au navigateur, et ce sera probablement plus lent et plus exigeant en mémoire.
bien que j'aime Json et je le recommande, je pense qu'il n'y a pas de différence fondamentale entre la vitesse de traitement optimale. Les différences entre les bibliothèques et les plateformes sont plus significatives: un bon analyseur xml est plus rapide qu'un mauvais analyseur json et vice versa. Donc habituellement la performance des formats eux-mêmes n'est pas un facteur important. Les deux peuvent s'allumer rapidement (Java a quelques bons analyseurs pour les deux, par exemple, d'autres langues probablement aussi).
quant à la compacité, cela dépend du type de données, Json est souvent un peu plus compact, mais pas radicalement. Sauf si vous avez beaucoup de tableaux/listes, où JSON notation "{ ... } "est beaucoup plus compact que le balisage xml (sauf si vous utilisez un espace blanc si possible, comme "1 2 3 4").
Le lien dirkgently possède un bon résumé des différences (faites défiler vers le bas). Les points importants sont les suivants:
JSON: plus petit, peut représenter tous les caractères unicode (xml ne peut pas en UTF8, au moins, par ses propres spécifications). Il est également trivial de l'utiliser dans les applications AJAX (à cause de la fonction eval() de javascript), en particulier les fonctionnalités plus avancées comme jsonp (responses invoke callbacks).
XML: il y a beaucoup d'outils pour faciliter la recherche de sa structure. Depuis son plus ancien et plus établi, il dispose également de plus de soutien d'outils en général.
en général, ils peuvent accomplir les mêmes choses (vous pouvez faire jsonp par xml, il suffirait d'analyser manuellement le callback).
Vous pouvez lire JSON: La Graisse sans Alternative à XML. Avec JSON, vous pouvez jouer avec les callbacks aller-retour entre la source et la destination d'une requête et en fait l'utiliser sans douleur dans votre code Javascript existant.
je pense qu'un autre avantage de Json est qu'il n'utilise pas <> brackets et vous pouvez y mettre du code html sans beaucoup de confusion.
JSON isléger, Ajax friendly (considéré comme un sous-ensemble de Javascript) et facilement sérialisable. XML faire tout cela, mais après avoir bu un peu de lait.