web-dev-qa-db-fra.com

XML et JSON - Avantages et inconvénients?

J'ai récemment entendu parler de JavaScript Object Notation (JSON), et après l'avoir recherché, il semble qu'il devienne plutôt populaire comme alternative au langage de balisage extensible (XML).

Je suis allé sur la page this pour plus d'informations, mais cela ressemblait plus à une page bashing XML qu'à une page de comparaison. J'ai donc pensé que je devrais demander ici:

Quels sont les avantages de JSON par rapport à XML, et pourquoi (le cas échéant) devrions-nous choisir l'un plutôt que l'autre?

25
Mehrdad
  • JSON est plus compact et peut être facilement chargé en JavaScript.
  • XML est plus strict et prend en charge les schémas et les espaces de noms.

À première vue, JSON semble supérieur à tous égards - il est flexible, plus compact et dans de nombreux cas plus facile à utiliser (en particulier lorsque vous travaillez avec JavaScript), mais il manque certaines fonctionnalités clés, en particulier:

  • Prise en charge du schéma ,

C'est à dire. la possibilité pour la partie A de spécifier le format d'un document et la capacité pour la partie B de vérifier qu'elle fournit quelque chose qui correspond à ce format.

Ceci est crucial lors du passage de données entre des systèmes distincts, où un écart par rapport au format attendu peut signifier que les données ne peuvent pas être traitées (ou pire, sont traitées de manière incorrecte).

  • Prise en charge de l'espace de noms ,

C'est à dire. la possibilité de mélanger des données destinées à être lues par plusieurs sources (ou écrites par plusieurs sources) dans le même document.

Un exemple de ceci en action est le protocole SOAP - les espaces de noms permettent la séparation du SOAP "Envelope", ou Les données "Wrapper" qui sont transmises avec les données d'application sérialisées. Cela permet aux frameworks Web de traiter et de gérer l'enveloppe SOAP, puis de transmettre les données du corps/de la charge utile à l'application.


JSON est très utile lors du développement d'une application Web nécessitant une sérialisation rapide, compacte et pratique des données, mais sa nature flexible est ce qui le rend moins adapté que XML pour le transfert de données entre des systèmes distincts ou le stockage de données qui seront lues. par des tiers.

Peut-être qu'avec le temps, ces types de fonctionnalités apparaîtront dans JSON, mais pour l'instant XML est le format dominant pour des choses comme les services Web et les formats de fichiers.

40
Justin

Avantages de JSON

  • Taille de message plus petite
  • Plus d'informations structurelles dans le document
    • Peut facilement distinguer le nombre 1 et la chaîne "1" sous forme de nombres, les chaînes (et les booléens) sont représentés différemment dans JSON.
    • Peut facilement faire la distinction entre des éléments uniques et des collections de taille un (à l'aide de tableaux JSON).
  • Plus facile de représenter une valeur nulle
  • Facilement consommé par JavaScript

Avantages de XML

  • Les espaces de noms permettent le partage de structures standard
  • Meilleure représentation de l'héritage
  • Manières standard d'exprimer la structure du document: schéma XML, DTD, etc.
  • Normes d'analyse: DOM, SAX, StAX
  • Normes d'interrogation: XQuery et XPath
  • Normes de transformation d'un document: XSLT

Dessiner

  • Lisible par l'homme
  • Facile à analyser
22
bdoughan

XML

  • Peut avoir un schéma indiquant son format.
    • Cela intéresse les personnes chargées du contrôle de la qualité. Vous pouvez prouver que son format correspond à ce qui est attendu et, par conséquent, vous n'aurez peut-être pas à être aussi fervent que vous le seriez autrement à vérifier qu'un champ existe à l'intérieur chaque fois que vous souhaitez en référencer un.
    • (Bien que cela présuppose que vous vous efforciez de valider réellement le XML par rapport à son schéma.)
  • Gonflé; chaque nom de champ doit être écrit deux fois par champ. Ew!

JSON

  • Beaucoup moins gonflé, plus facile à analyser et sans doute plus lisible par l'homme (si vous l'espacez correctement).
  • Pas aussi puissant: pas assez expressif pour séparer les attributs des valeurs.

Avantages de XML

  1. Prise en charge quasi omniprésente dans un large éventail de langages et de cadres. Il est plus probable qu'improbable qu'il existe déjà un outil pour vous aider à extraire des informations d'une réponse XML.

  2. Il peut adhérer à un schéma concret si vous le souhaitez. Une fois qu'il est validé, vous pouvez dire qu'il est correct et commencer l'analyse.

  3. Les espaces de noms vous permettent de diviser le XML.

Avantages de JSON

  1. Léger par rapport à XML. Moins de caractères = temps plus court passant par le internet tubes.

  2. Plus facile à gérer avec Javascript si vous avez besoin de quelque chose pour une application Web.

5
Only Bolivian Here

JSON - plus petit et peut être chargé nativement en tant qu'objet JavaScript (la vitesse est une valeur)

XML - toujours standard, mais plus ancien (plus lent, plus grand, mais pas seulement JS)

3
bensiu

JSON est un format beaucoup plus simple que XML. JSON est uniquement destiné à décrire les données comme une hiérarchie d'objets, tandis que XML possède également de nombreuses autres fonctionnalités.

Si vous avez seulement besoin d'envoyer des données simples et simples, alors JSON est une bonne alternative, car c'est exactement ce à quoi il est destiné.

Si vous avez besoin d'un moyen plus puissant de décrire vos données, vous aurez besoin de XML, car JSON n'a tout simplement rien d'extraordinaire.

2
Guffa

Moins verbeux - XML ​​utilise plus de mots que nécessaire

JSON est plus rapide - L'analyse du logiciel XML est lente et lourde. Beaucoup de ces bibliothèques de manipulation DOM peuvent conduire vos applications à utiliser de grandes quantités de mémoire en raison de la verbosité et du coût de l'analyse de gros fichiers XML.

La structure du modèle de données JSON correspond aux données: la structure de données JSON est une carte tandis que XML est un arbre. Bien qu'une carte (uniquement des paires clé/valeur) puisse être limitative, c'est ce que nous voulons, car elle est plus facile à interpréter et prévisible.

Dans le code: les éléments sont représentés de la même manière dans le code. Dans de nombreuses langues, en particulier les langues dynamiques, vous pouvez simplement "Slurp dans le JSON" et vous avez immédiatement votre objet de domaine. Il est facile de passer d'objets en JSON aux objets en code car ils s'alignent. Lorsque vous passez d'objets en XML à des objets en code, ils ne s'alignent pas et il y a beaucoup de place pour l'interprétation.

JSON est limitatif, mais c'est une bonne chose: JSON est limité en termes d'objets pouvant être modélisés. Certains peuvent penser que XML est meilleur car plus d'objets peuvent être modélisés et cela n'interdit pas aux développeurs. Mais même si JSON interdit les développeurs, c'est d'une manière positive, ce qui rend le code plus simple, plus prévisible et facile à lire. XML peut être formaté pour ressembler et fonctionner comme une entreprise le souhaite, mais il est difficile pour les développeurs de lire, de comprendre et de convertir. Dans la plupart des cas, les gens pensent que XML est meilleur parce que les développeurs peuvent tout faire sous le soleil, mais à l'ère de la simplification, moins c'est plus, ce qui fait de JSON une meilleure alternative.

1
vks

Ce sont des formats tout aussi expressifs. JSON est moins verbeux. JSON peut être analysé facilement en JavaScript (et dans d'autres langues), et XML est également analysé facilement par de nombreuses choses.

Je pense que la considération la plus importante est ce qui consommera les données - si vous avez déjà un tas de code d'interprétation XML, respectez-le. Si tous vos clients sont des développeurs Web, optez pour JSON.

1
Riley Lark