35 votes

Choisir entre JSON et XML

Auparavant, j'utilisais XML soap pour l'échange de données dans mes services web, mais je suis passé à json pour un autre projet. Maintenant, je n'arrive pas à trouver une raison de revenir à XML, principalement à cause de la différence de taille de réponse pour les gros objets.

Dans quel cas auriez-vous besoin d'utiliser XML plutôt que json pour la réponse du service web ?

33voto

Allbite Points 1365

Cela dépend du type de client qui se connectera à ce service web.

Si vous prévoyez de contacter le service Web à partir d'un navigateur, à la manière des appels AJAX en Javascript, JSON est le vainqueur incontesté car il s'agit essentiellement de la sérialisation des objets Javascript. Cette propriété de JSON le rend beaucoup plus adapté aux scripts côté client en Javascript. Les données JSON peuvent être régurgitées directement dans des objets Javascript vivants, sans grand tapage.

XML et JSON ont été conçus pour deux objectifs distincts. XML a été conçu comme un moyen de donner une définition sémantique au texte des documents. JSON, quant à lui, est spécifiquement destiné à la sérialisation des structures de données.

Les deux peuvent faire ce que l'autre peut faire, mais ces logiques de conception de base fondamentalement différentes sont, je pense, évidentes dans la façon dont vous travaillez avec chaque type de balisage.

Il est vrai que XML peut représenter des structures de données, mais un exemple de description de structures telles que des tableaux vides en XML montre que JSON est bien meilleur pour décrire des structures de données.

JSON, quant à lui, n'est pas du tout adapté à la description du sens sémantique du texte dans les documents, domaine dans lequel XML excelle (pensez à HTML).

Pas de réponse facile. Les exigences de votre client de connexion et le type de données que vous devez sérialiser doivent déterminer le choix entre XML et JSON.

JSON pour les services web répondant à des rappels dans le navigateur, et XML pour, eh bien, XML pour quand, eh bien, hmmm. :-)

9voto

ChristopheD Points 38217

Pris à partir de ce lien (Je suis d'accord avec l'idée générale proposée ici) :

Utiliser JSON - Cela me semble facile ; si vous voulez sérialiser une structure de données qui n'est pas trop lourde en texte et que tout ce que vous voulez, c'est que le récepteur obtienne la même structure de données avec un minimum d'effort, et que vous faites confiance à l'autre extrémité pour que la traduction soit correcte, JSON est parfait.

Utiliser XML - Si vous voulez fournir des données à usage général avec lesquelles le destinataire pourrait vouloir faire des choses étranges et folles, ou si vous voulez être vraiment paranoïaque et pointilleux sur l'i18n, ou si ce que vous envoyez ressemble plus à un document qu'à une structure, ou si l'ordre des données a de l'importance, ou si les données ont une durée de vie potentiellement longue (c'est-à-dire plus de quelques secondes), XML est la voie à suivre.

5voto

lexicore Points 7723

En fait, je ne comprends pas la contradiction entre JSON et XML. Nous utilisons volontiers les deux en parallèle :

  • Le format du contenu de nos échanges est défini par des schémas XML.
  • Nous utilisons JAXB/XJC pour compiler ces schémas en classes Java.
  • Nos services fonctionnent avec ces classes Java dérivées du schéma.
  • Nous utilisons SOAP et HTTP/POST/XML en frontal pour les services web basés sur XML.
  • Nous utilisons DWR pour les services web basés sur JSON.

JAXB est capable de lire/écrire des objets à partir de/vers XML. DWR est capable de lire/écrire des objets à partir de/vers JSON. Ces "objets" sont les mêmes objets.

Vous pouvez donc avoir à la fois XML et JSON sur le même modèle de données.

3voto

mamoo Points 6151

Bonne question. JSON est incontestablement plus facile à utiliser dans certains scénarios, mais vous devez tenir compte du fait qu'il ne peut pas être validé et qu'il ne possède pas d'espaces de noms. D'un autre côté, il est définitivement plus léger que XML et pour des choses comme le javascript et la communication ajax, il vous donne beaucoup de flexibilité.
Vous pouvez y jeter un coup d'œil ici :
http://www.infoq.com/news/2006/12/json-vs-xml-debate
http://ajaxian.com/archives/json-vs-xml-the-debate

2voto

Omry Yadan Points 7523

Les clients traditionnels qui ne prennent pas en charge JSON. Sinon, c'est un jeu d'enfant.

JSON est plus facile à analyser, plus économique en taille et plus facile à lire (s'il est formaté).

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