Quand préférer JSON au XML?

mon exigence est juste d'afficher un ensemble de valeurs extraites de la base de données sur un spread. Je suis à l'aide de jquery.

141
demandé sur Dustin 2008-11-28 08:14:50

18 réponses

favorise XML plutôt que JSON lorsque l'un de ceux - ci est vrai:

  • vous avez besoin de la validation du message
  • vous utilisez XSLT
  • vos messages comprennent beaucoup de texte balisé
  • Vous devez interagir avec des environnements qui ne supportent pas le JSON

favorise JSON au lieu de XML lorsque tous ces éléments sont vrais:

  • les Messages n'ont pas besoin d'être validée, ou valider leur désérialisation est simple
  • Vous n'êtes pas transformer les messages, ou la transformation de leur désérialisation est simple
  • vos messages sont pour la plupart des données, pas des textes marqués
  • La messagerie paramètres ont une bonne JSON outils
147
répondu Robert Rossney 2008-12-01 00:34:19

j'utilise JSON sauf si je dois utiliser XML. C'est plus simple à comprendre, et (parce que cela nécessite moins de configuration) c'est plus facile à programmer pour la lecture et l'écriture si les bibliothèques sont disponibles dans votre contexte, et elles sont assez ubiquistes maintenant.

quand Amazon a présenté ses catalogues comme un service web, ils ont offert à la fois JSON et XML. Quelque chose comme 90% des réalisateurs ont choisi JSON.

78
répondu dkretz 2010-07-05 00:50:58

compte tenu de votre cas spécifique où vous faites déjà javascript du côté du client, j'irais avec JSON pour ces raisons:

  • puisque JSON est natif de javascript vous devriez écrire moins de code sur la côté client-juste eval() (ou, mieux encore, JSON.parse() ) le JSON chaîne et obtenir un objet, vous pouvez utiliser.

  • en même temps évaluer JSON sur le côté client sera plus efficace, et donc plus rapide.

  • la sérialisation JSON produit des des chaînes que XML. Utilisation de JSON will réduire la quantité de données circulant à travers le fil et d'améliorer le rendement à cet égard.

Voici d'autres lectures: http://www.subbu.org/blog/2006/08/json-vs-xml

16
répondu urig 2015-11-22 20:03:19

quelques autres choses que j'ai rencontrées dans le XML vs JSON relm:

JSON est très bon pour

  • paires nom / valeur
  • nicher ces couples

ce qui signifie qu'il a tendance à ressembler à un tableau ou à un tableau imbriqué. Cependant JSON manque les deux

  • attributs
  • namespacing

donc si vous étiez pour combiner deux ou plusieurs services JSON il pourrait y avoir des conflits d'espace de noms potentiels. Cela dit, JSON peut être utilisé pour environ 90% des mêmes choses XML peut être utilisé pour lors de l'échange de données dans mon expérience.

13
répondu null 2009-01-11 06:33:42

habituellement JSON est plus compact, et plus rapide à analyser.

Préférez XML si:

  • vous devez traiter les données sur le client, et vous pouvez utiliser XSL pour cela. Il est probable que la chaîne XML + XSL fonctionnera plus rapidement que JSON + JavaScript, surtout pour les gros morceaux de données.
    • un bon cas est de convertir les données en un extrait HTML.
  • divers cas d'héritage:
    • il existe un service XML et il est difficile de le réécrire avec JSON pour certaines raisons.
    • vous devez poster ces données en XML après un traitement léger en utilisant l'entrée de l'utilisateur.

un cas important de (presque) XML: essayez de détecter lorsque L'envoi de fragments HTML est plus bénéfique que l'envoi de données brutes. AHAH peut faire des merveilles dans des applications simples, pourtant souvent négligé. Habituellement, ce style suppose qu'un serveur envoie des extraits HTML qui seront insérés dans la page Web sans traitement.

habituellement dans les cas AHAH CSS est mis à profit au max pour masser les snippets visuellement et mettre en œuvre des conditions simples comme Cacher/Montrer les parties pertinentes de la snippet en utilisant des paramètres spécifiques à l'utilisateur ou à l'application.

11
répondu Eugene Lazutkin 2008-11-28 06:45:33

JSON est facile et rapide à analyser. XML est un peu plus difficile à analyser, et plus lent à analyser et à transférer (dans la plupart des cas).

puisque vous utilisez jQuery, je suggère d'utiliser JSON: jQuery peut retreive données JSON et de le convertir en un objet Javascript automatiquement. En fait, vous pouvez convertir des données JSON en un objet Javascript en utilisant eval . XML devrait être traduit manuellement par vous (Je ne sais pas comment cela fonctionne en Javascript), mais c'est difficile/plus ennuyeux dans la plupart des langues avec lesquelles j'ai utilisé des bibliothèques XML).

8
répondu strager 2008-11-28 05:51:52

JSON est toujours préférable en termes de traitement que le navigateur client doit faire pour l'analyse des données. De plus, JSON est un format d'échange de données léger.

l'analyse XML consomme toujours beaucoup de ressources du navigateur et devrait être évitée autant que nous le pouvons à moins que nous n'en ayons besoin autrement.

8
répondu Tejasvi 2009-01-24 14:07:50

je choisirais XML plutôt que JSON si j'ai besoin de valider le morceau de données entrantes, parce que XML soutient nativly ceci par le biais de XSD.

6
répondu lowglider 2008-11-28 12:46:08

j'ai un billet de blog sur le sujet détaillant l'histoire des protocoles web (i.e. SOAP, XML, JSON, REST, POX, etc) fournissant un résumé ainsi que certains avantages et inconvénients de chacun: http://www.servicestack.net/mythz_blog/?p=154

en fait, je pense que vous pouvez dessiner de nombreuses similitudes entre XML et JSON en comparant les différences entre les langues dynamiques (JSON) et statiques (XML).

essentiellement XML est un format de sérialisation plus strict et plus rigide qui peut être vérifié avec un schéma d'accompagnement (qui est soit un XSD soit un DTD). Les XSD sont assez élaborés et vous permettent de décrire de nombreux types différents, par exemple les Dates, les heures, les énumérations, les Types définis par L'Utilisateur et même les héritages de Type, etc. SOAP s'appuie efficacement sur L'ensemble de fonctionnalités XML pour fournir une manière standardisée de décrire vos services web (par exemple, types et opérations) par le biais d'une WSDL. La verbosité et la complexité de la spécification WSDL cela signifie qu'il peut être plus fastidieux de développer avec, mais en même temps, il y a beaucoup plus d'outils à votre disposition et la plupart des langues modernes fournissent des outils automatisés pour générer vos procurations client en prenant une partie de la charge en essayant d'interopérer avec des services externes. (Bien qu'en même temps je trouve des mandataires générés un fardeau eux-mêmes quand traiter avec des services web changeants fréquemment).

je recommande toujours L'utilisation de XML pour vos services web si vous avez un "service d'entreprise" bien défini qui n'est pas sujet à des changements fréquents ou votre service web doit être accédé à partir de nombreuses langues différentes.

pour tous ses avantages XML vient avec des inconvénients aussi bien. Il s'appuie sur des espaces de noms afin de fournir un format extensible dactylographié et vous permet de spécifier des attributs et des éléments dans le même document. Avoir des espaces de noms différents dans un même document signifie beaucoup de temps lorsqu'on utilise un analyseur Xml pour extraire de données, vous devrez également fournir les noms de chaque élément que vous souhaitez récupérer/traverse. Il extrapole également la charge utile en la rendant plus verbeuse qu'elle n'a besoin d'être. Le fait d'avoir l'option de produire des attributs ainsi que des éléments signifie que vos classes ne correspondent pas parfaitement à un document XML. Ces caractéristiques en font un mauvais ajustement programmatique pour la plupart des langues de la rendre plus pénible et difficile à utiliser. Microsoft a reconnu et simplifié ce quelque peu avec dans leur DataContract sérialiseur en supprimant les attributs XML et juste avoir les propriétés de votre carte d'éléments Xml.

JSON d'un autre côté est le contraire complet de XML à bien des égards, car il est très mal typé et n'a que le support simple pour les types de base: nombre, Bool, chaîne, objets et tableaux. Tout le reste doit essentiellement tenir dans une corde. Ce n'est pas génial lorsque vous essayez de communiquer au-delà des limites de la langue que vous aurez besoin d'adhérer à certains hors bande spécification non standard si vous souhaitez prendre en charge des types plus spécifiques. D'un autre côté, ses fonctionnalités limitées-set rend un bon programme adapté à la plupart des langues - et est parfaitement adapté pour JavaScript car une chaîne JSON peut être eval'ed directement dans L'objet JavaScript.

taille et performances

j'ai une certaine base de données les comptoirs de repères disponibles comparaison de la taille et de la vitesse entre les implémentations de Microsofts XML et JSON. Fondamentalement XML est plus de 2x la taille de JSON, mais en même temps, il semble que Microsoft a mis beaucoup d'efforts dans l'optimisation de leur DataContractSerializer XML comme il est plus de 30% plus rapide que leur JSON one. Il semble que vous devez faire un compromis entre la taille et la performance. Pas heureux avec ce fait, j'ai décidé d'écrire mon propre rapide JsonSerializer qui est maintenant 2,6 x plus rapide que le XML de MS Un-donc meilleur de deux mondes :).

6
répondu mythz 2010-08-18 01:28:45

de JSON - le dernier des pieds

quand vous descendez la route JSON, vous exécutez dans les mêmes questions que XML face il y a 10 ans:

mélange de données provenant de deux sources différentes dans un paquet JSON peut causer un élément les étiquettes à heurter les uns les autres. Mélanger jusqu' un bordereau de livraison et une facture, et soudain, l'adresse peut signifier quelque chose de tout à fait différent. C'est pourquoi les espaces de noms .

conversion entre différents JSON les structures nécessiteraient l'écriture mondain code. Une façon plus déclarative cartographier les données faciliterait le travail. C'est pourquoi XML a XSLT .

décrivant un paquet JSON structure - ses champs, types de données, etc.est nécessaire pour les personnes à accrocher dans vos services. C'est essentiel d'avoir un langage de métadonnées pour cela. C'est pourquoi XML a "151980920 des" Schémas .

les conversations client-serveur prennent soins. Si vous demandez au serveur deux des questions et obtenir une réponse de retour, comment savez-vous à quelle question il répond? C'est pourquoi XML a WS-Correlation .

3
répondu Özgür 2010-07-14 08:33:51

de la première ligne à http://json.org/xml.html

Extensible Markup Language (XML) est un format de texte dérivé du Standard Generalized Markup Language (SGML). Comparé à SGML, le XML est simple. Le langage de balisage hypertexte (HTML), par comparaison, est encore plus simple. Même ainsi, un bon livre de référence sur HTML est d'un pouce d'épaisseur. En effet, le formatage et la structuration des documents sont une tâche complexe. . . .

Clairement JSON est plus rapide, mais il est encore plus clair qu'il est difficile à lire. Utilisez JSON pour la vitesse, utilisez XML s'il y aura une interaction humaine et vous pouvez sacrifier la vitesse.

3
répondu 2014-03-18 15:22:10

JSON est l'encodage natif pour javascript. Il devrait être beaucoup plus rapide et plus facile de travailler avec.

2
répondu Dustin 2008-11-28 05:22:40

j'utilise JSON pour tout type de configuration, d'échange de données ou de messagerie. J'utilise le XML seulement si je dois le faire pour d'autres raisons ou pour marquer sémantiquement des données de type document.

1
répondu Lawrence Dol 2008-11-28 06:02:17

XML et JSON sont supportés par Microsoft. Les documents XML étaient la nouvelle fonctionnalité cool de VB 9. Dans la prochaine version de ASP.NET 4.0 JSON est un must pour tirer parti de la puissance des Templiers côté client.

de la question que vous avez posée, il semble que JSON pourrait être le choix pour vous car il est facile de traiter du côté du client avec ou sans jQuery.

1
répondu MoizNgp 2009-03-29 10:04:26

utilisant JSON

  • si les données doivent être consommées par JavaScript dans le navigateur.
  • modèle de données est simple et pas complexe(trop d'objets composites).

utilisant XML

  • la plupart du temps dans une sorte D'environnement SOA où vous intégrez plusieurs services sur des plateformes et des technologies hétérogènes.
  • savon a un avantage qu'il peut être transmis à travers différents protocoles autres que HTTP.
  • facile à utiliser dans l'outil de transformation de modèle de données comme XSLT,XSL-FO etc.
  • Lot de support de base de données pour stocker/interroger(XQuery) des données XML.
  • XML est un format de données très évolué de sorte que vous trouverez beaucoup d'outils pour supporter n'importe quel cas d'utilisation que vous pouvez penser.
1
répondu Rohitdev 2013-04-23 09:57:09

Quick règles:

  • JSON: format des données programme-à-programme
  • YAML (JSON-ensemble): humaines-programme de format de données
  • XML: document markup format

explication:

le seul rôle de JSON est de sérialiser les objets orientés données utilisant les types de données communs à la plupart des langages de programmation: liste , hashes , et scalars , et à cette fin, il ne peut vraiment pas être battu ou améliorée. À savoir "JSON n'a pas de numéro de version [car] aucune révision de la grammaire JSON n'est prévue". - de Douglas Crockford (ne Peut pas battre ça comme un signe que vous faites votre travail à la perfection)

XML a été une fois vendu comme une inter-changer le format, mais considérer les deux cas d'utilisation les plus communs: communication client-serveur asynchrone (AJAX) - JSON a pratiquement remplacé XML entièrement (le X devrait vraiment être un J), et services web : JSON a fait XML une alternative redondante.

l'autre chose pour laquelle le XML était largement utilisé, était-ce que l'on pouvait écrire/lire (?) fichiers de données pour les programmes, mais ici aussi vous avez un plus concis, plus convivial, plus format convivial pour les humains en YAML, un JSON superset.

donc pour la représentation des données, JSON Bat XML à tous les niveaux. Ce qui est à gauche pour le XML? Représentation de document à contenu mixte, qui est ce qu'il était destiné à .

1
répondu Yarin 2014-01-14 18:54:26

j'ai trouvé cet article au Bazar numérique vraiment intéressant.

certaines parties de l'article sont citées ci-dessous.

à propos de JSON pros:

si tout ce que vous voulez passer sont des valeurs atomiques ou des listes ou des hachures de les valeurs atomiques, JSON a beaucoup d'avantages de XML: il est directement utilisable sur Internet, prend en charge une grande variété de les applications, il est facile de écrire des programmes pour traiter JSON, il a peu caractéristiques optionnelles, lisible par l'homme et raisonnablement clair, sa conception est formel et concis, les documents JSON sont faciles à créer, et il utilise Unicode. ...

à propos de XML pros:

XML traite remarquablement bien avec toute la richesse de non structuré données. Je ne m'inquiète pas du tout de L'avenir de XML même si sa mort est joyeusement célébré par un cadre D'API web designer.

et je ne peux pas résister à border un "je vous l'avais dit!"jeton loin dans mon Desk. J'ai hâte de voir ce que les gens de JSON font quand ils sont on leur a demandé de développer des IPA plus riches. Quand ils veulent échanger moins bien des données structurées, vont-elles être jetées dans JSON? Je vois occasionnel mention d'un langage schema pour JSON, d'autres langues suivront-elles? ...

0
répondu Christian Vielma 2013-08-20 00:45:00

la plupart des nouvelles technologies web fonctionnent en utilisant JSON, donc définitivement une bonne raison d'utiliser JSON. Un grand avantage est que dans XML vous pouvez représenter de multiples façons différentes la même information, ce qui dans JSON est plus simple.

aussi JSON IMHO est beaucoup plus clair que XML, ce qui en fait pour moi un avantage clair. Et si vous travaillez avec .NET, Json.NET est un gagnant clair pour vous aider à travailler avec JSON.

0
répondu xmorera 2015-10-12 03:27:19