149 votes

Quand préférer JSON à XML ?

Je souhaite simplement afficher un ensemble de valeurs extraites de la base de données sur une feuille de calcul. J'utilise jquery.

152voto

Robert Rossney Points 43767

Préférez XML à JSON lorsque l'une de ces conditions est remplie :

  • Vous avez besoin de la validation du message
  • Vous utilisez XSLT
  • Vos messages contiennent beaucoup de texte balisé
  • Vous devez interopérer avec des environnements qui ne supportent pas JSON.

Privilégiez JSON à XML lorsque toutes ces conditions sont réunies :

  • Les messages n'ont pas besoin d'être validés, ou la validation de leur désérialisation est simple.
  • Vous n'êtes pas en train de transformer les messages, ou de transformer leur désérialisation est simple
  • Vos messages sont principalement des données, pas du texte balisé.
  • Les points de terminaison de la messagerie disposent de bons outils JSON.

9 votes

JSON n'offre aucun avantage par rapport à XML dans la gestion du texte balisé. Mais je comprends votre point de vue ; c'est peut-être exagéré.

10 votes

Lorsque toutes les conditions sont égales, privilégiez JSON pour deux raisons : JSON est beaucoup plus léger à analyser que XML (favorable au CPU) et nécessite beaucoup moins de données à transférer (favorable au réseau).

0 votes

Quand utiliseriez-vous XSLT et non XML ? XML est une évidence si vous utilisez déjà XSLT. Cela ne devrait pas servir d'argument pour utiliser XML. C'est comme dire qu'il faut utiliser JSON si vous utilisez JSON.parse(). De plus, je dirais qu'il est plus facile de transformer un objet JSON que d'écrire une transformation XSLT, mais c'est peut-être un préjugé personnel.

82voto

le dorfier Points 27267

J'utilise JSON à moins que l'on me demande d'utiliser XML. C'est plus simple à comprendre et (parce que cela nécessite moins de configuration) il est plus facile de programmer la lecture et l'écriture si les bibliothèques sont disponibles dans votre contexte, et elles sont plutôt omniprésentes maintenant.

Lorsqu'Amazon a présenté pour la première fois ses catalogues sous la forme d'un service web, elle proposait à la fois JSON et XML. Quelque chose comme 90% des implémenteurs ont choisi JSON.

58 votes

"J'utilise JSON à moins que je sois obligé d'utiliser XML." ~ Exactement.

2 votes

La question plus profonde est donc la suivante : "Pour quelles raisons devriez-vous utiliser le XML ?". Ces raisons sont-elles idiotes, ou reflètent-elles simplement des préoccupations différentes, d'un point de vue différent du vôtre ?

5 votes

Plusieurs raisons possibles, dont un logiciel existant que je ne veux pas réécrire. Mais la plus importante est l'utilisation de XML comme format d'échange de données lorsque je ne contrôle pas les deux extrémités, ou qu'il existe une norme formelle qui s'applique et exige XML. Je ne peux choisir qu'arbitrairement lorsque je suis le seul développeur concerné.

15voto

urig Points 2707

Compte tenu de votre cas particulier où vous utilisez déjà javascript du côté client, j'opterais pour JSON pour ces raisons :

  • Puisque JSON est natif de javascript vous devrez écrire moins de code côté client. côté client. eval() (ou, mieux encore, JSON.parse() ) le JSON et obtenir un objet que vous pouvez utiliser.

  • Dans le même temps, l'évaluation de JSON sur côté client sera plus efficace, et donc plus rapide.

  • La sérialisation JSON produit des chaînes plus courtes que le XML. L'utilisation de JSON réduire la quantité de données circulant sur le fil et améliorera les performances à cet égard.

Voici quelques lectures complémentaires : http://www.subbu.org/blog/2006/08/json-vs-xml

7 votes

N'est pas eval() L'utilisation de JSON est un gros problème ?

0 votes

@Shy, le propre site de JSON indique que vous pouvez utiliser eval sur JSON (avec des parenthèses enveloppées) : json.org/js.html

9 votes

Tiré de json.org : La fonction eval est très rapide. Cependant, elle peut compiler et exécuter tout programme JavaScript, ce qui peut poser des problèmes de sécurité. L'utilisation de eval est indiquée lorsque la source est fiable et compétente. Il est beaucoup plus sûr d'utiliser un analyseur syntaxique JSON

14voto

null Points 3159

J'ai rencontré d'autres problèmes dans le cadre de la comparaison entre XML et JSON :

JSON est très bien pour

  • paires nom/valeur
  • emboîter ces paires

Ce qui signifie qu'il a tendance à aimer un tableau ou un tableau imbriqué. Cependant, JSON n'a pas les deux

  • attributs
  • espacement des noms

Ainsi, si vous deviez combiner deux services JSON ou plus, il pourrait y avoir des conflits d'espace de noms potentiels. Ceci étant dit, selon mon expérience, JSON peut être utilisé pour environ 90% des mêmes choses que XML pour l'échange de données.

0 votes

Un autre problème de Json est que vous ne pouvez pas fusionner facilement deux messages json pour créer un nouveau message json. Il ne sera généralement pas bien formé

7 votes

Pourquoi auriez-vous besoin d'attributs ? Si votre élément contient d'autres valeurs, faites-en un objet - les membres sont vos "attributs". Franchement, je pense que la structure bifurquée attributs/conteneurs de XML est entièrement préjudiciable.

0 votes

Je dirais que le fait que JSON n'ait pas d'attributs est une caractéristique.

11voto

Eugene Lazutkin Points 22414

En général, JSON est plus compact et plus rapide à analyser.

Préférez le XML si :

  • Vous devez traiter les données sur le client, et vous pouvez vous appuyer sur XSL pour cela. Il y a de fortes chances que la chaîne XML + XSL soit plus rapide que JSON + JavaScript, surtout pour les gros volumes de données.
    • Un bon cas de figure consiste à convertir les données en un extrait HTML.
  • Diverses affaires héritées :
    • Il existe un service XML existant, et il est difficile de le réécrire avec JSON pour certaines raisons.
    • Vous devez renvoyer ces données au format XML après un léger traitement à l'aide des données de l'utilisateur.

Un cas important de (presque) XML : essayer de détecter quand l'envoi de snippets HTML est plus avantageux que l'envoi de données brutes. AHAH peut faire des merveilles dans des applications simples, pourtant souvent négligées. Ce style suppose généralement qu'un serveur envoie des extraits HTML qui seront intégrés dans la page Web sans être traités.

Habituellement, dans les cas d'AHAH, CSS est exploité au maximum pour masser visuellement les extraits et mettre en œuvre des conditions simples comme masquer/afficher les parties pertinentes de l'extrait en utilisant des paramètres spécifiques à l'utilisateur ou à l'application.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X