web-dev-qa-db-fra.com

Pouvons-nous remplacer XML par JSON entièrement?

Je suis sûr que de nombreux développeurs connaissent XML et JSON , et ils 'ai utilisé les deux. Il est donc inutile d'expliquer ce qu'ils sont et quel est leur but, même en bref.

Si nous essayons de cartographier leurs concepts, nous pouvons dire (corrigez-moi si je me trompe):

  1. Les balises XML sont équivalentes à JSON {}
  2. Les attributs XML sont équivalents aux propriétés JSON
  3. La collection de balises XML est équivalente à JSON []

La seule chose à laquelle je peux penser, qui n'existe pas en JSON, est XML Namespaces .

La question est, compte tenu de ce mappage, et considérant que JSON est très plus léger dans ce mappage, pouvons-nous voir un monde à l'avenir (ou du moins théoriquement penser à un monde) sans XML, mais avec JSON faisant tout ce que XML fait? Pouvons-nous utiliser JSON partout où XML est utilisé?

PS: Veuillez noter que j'ai vu cette question. C'est quelque chose de complètement différent de ce que je demande ici. Par conséquent, veuillez ne pas mentionner doublon .

81
Saeed Neamati

Ce qui donne à XML sa puissance et une grande partie de sa complexité, c'est le contenu mixte. Des trucs comme ça:

<p>A <b>fine</b> mess we're in!</p>

N'essayez même pas de faire cela en JSON, ou de le manipuler dans les langages de programmation conventionnels. Ils n'étaient pas conçus pour le travail.

Ce genre de question vient généralement de personnes qui oublient que le M en XML représente le balisage. C'est une façon de prendre du texte brut et d'ajouter du balisage pour créer du texte structuré. Il est également très pratique pour les données à l'ancienne, mais ce n'est pas pour cela qu'il a été conçu ou où se trouvent ses principaux atouts. Il existe de nombreuses façons de gérer des données simples, et JSON en fait partie.

155
Michael Kay

La principale différence, je pense, réside dans le fait que XML est conçu pour s'expliquer de lui-même avec ses dtd et tout.

Avec JSON, vous devez assumer beaucoup de choses sur les données que vous recevez.

32
Maarten van Leunen

Une traduction littérale en JSON est souvent moins succincte et moins claire. Considérer:

<foo>
   <x:bar x:prop1="g">
      <quuz />
   </bar>
</foo>

La représentation JSON la plus efficace que j'ai vue de ceci:

{"localName":"foo",
 "children": // you need to have a special array to hold all children
 [
    {"localName": "bar",
     "namespace": "x"
        // once again, to ensure that there are no collisions,
        // attributes should be brought out into their own JSON structure 
        "attributes":[
            {"localName":"prop1",
             "namespace":"x",
             "value":"g"}
        ],
         "children":[
             {"name":"quux"}
         ]
     }
 ]}

Maintenant, imaginez cela pour un fichier XML entier. Je ne dis pas que JSON n'a pas sa place, mais XML ne doit pas être exclu.

21
cwallenpoole

JSON et XML sont les deux façons de formater les données. Les deux sont capables de le faire parfaitement bien, alors JSON peut-il faire tout ce que XML fait? Oui.

Mais ..... Une question plus pertinente pourrait ne pas être ce que XML/JSON peut faire, mais plutôt, que pouvez-vous faire avec XML/JSON.

Il y a plusieurs choses que vous pouvez faire avec XML que je ne pense pas que vous puissiez faire avec JSON, comme traduire avec XLST, rechercher avec XPath et valider avec des schémas. Tout cela est très, très utile.

14
Qwerky

Il y a beaucoup de fonctionnalités utilisant XSLT qui peuvent ne pas être possibles avec JSON. Donc, s'ils ne sont pas fonctionnellement équivalents, ils ne pourraient pas se remplacer.

11
StuperUser

Le fait est que nous allons devoir vivre avec les deux pendant longtemps, et être un bigot JSON est "considéré comme nuisible".

8
Scott C Wilson

JSON est assez nouveau et les systèmes hérités ne le prendront pas en charge. La mise à niveau des anciens systèmes coûte cher et introduit des bogues. JSON ne remplacera XML à aucun moment dans un avenir proche.

7
Tom Squires

Cela dépend du domaine. En termes de services Web? Absolument. Il est tout à fait honteux que les fournisseurs poussent toujours SOAP sur leurs clients. REST + JSON jusqu'au bout).

Maintenant, lorsque vous parlez de données complexes et structurées avec des informations de style comme Docbook ou une autre implémentation? C'est un domaine approprié pour XML.

6
Jason Lewis

Je dirais que cwallenpoole fait un excellent point. Alors que la plupart des XML peuvent être traduits en JSON, il est préférable de le faire car c'est un point distinct.

JSON se prête aux structures de données au moins aussi bien qu'à XML et probablement mieux, mais XML lit beaucoup plus naturellement que JSON lors du balisage de documents textuels, où les balises sont utilisées dans un flux de texte plus large plutôt que simplement comme un moyen de délimiter une hiérarchie des champs.

Alors que HTML 5 peut avoir son propre analyseur, cela laisse toujours des applications comme DocBook.

6
ssokolow

Pourquoi vous limiter à JSON lorsque YAML est un super ensemble et beaucoup plus expressif et donc plus puissant que XML ou JSON.

Cela dit, si vous utilisez les cadres de sérialisation corrects, vous devriez pouvoir sérialiser et désérialiser tous les formats mentionnés ci-dessus avec quelques lignes de code simples.

4
user7519

Cela devient moche lorsque vous essayez de modéliser ces deux objets en JSON:

<customer><name>John Doe</name></customer>
<employee><name>John Doe</name</employee>

En utilisant JSON comme il est utilisé dans 99% des cas, on se perd avec:

{ name: "John Doe" } 

Et maintenant, vous devez ajouter des méta-structures et toute la beauté de JSON a disparu pendant que vous vous retrouvez avec les inconvénients.

3
Michal Till

Je ne sais pas si une telle fonctionnalité existe pour JSON, mais dans .NET au moins, vous pouvez valider XML par rapport à un schéma donné. C'est un avantage précieux de XML à mes yeux.

3
Grant Palin