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?
À 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:
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).
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.
Avantages de JSON
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.Avantages de XML
Dessiner
XML
JSON
Avantages de XML
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.
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.
Les espaces de noms vous permettent de diviser le XML.
Avantages de JSON
Léger par rapport à XML. Moins de caractères = temps plus court passant par le internet tubes
.
Plus facile à gérer avec Javascript si vous avez besoin de quelque chose pour une application Web.
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)
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.
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.
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.