77 votes

Quelle est la difference entre json et xml

Quelle est la difference entre json et xml

165voto

Daniel Earwicker Points 63298

La différence fondamentale, à laquelle aucune autre réponse semble avoir mentionné, est que le XML est un langage de balisage (comme il le dit dans son nom), alors que JSON est un moyen de représenter des objets (comme indiqué dans son nom).

Un langage de balisage est un moyen d'ajouter de l'information supplémentaire à écoulement libre de la plaine de texte, courriel.g

Here is some text.

Avec XML à l'aide d'un certain élément de vocabulaire), vous pouvez mettre:

<Document>
    <Paragraph Align="Center">
        Here <Bold>is</Bold> some text.
    </Paragraph>
</Document>

C'est ce qui rend les langages de balisage si utile pour la représentation des documents.

Un objet de la notation comme JSON n'est pas aussi flexible. Mais c'est généralement une bonne chose. Lorsque vous êtes représentant des objets, tout simplement, vous n'avez pas besoin de plus de flexibilité. Pour représenter l'exemple ci-dessus en JSON, vous fait pour résoudre certains problèmes manuellement que XML résout pour vous.

{
    "Paragraphs": [
        {
            "align": "center",
            "content": [
                "Here ", {
                    "style" : "bold",
                    "content": [ "is" ]
                },
                " some text."
            ]
        }
    ]
}

C'est pas aussi beau que le XML, et la raison en est que nous essayons de faire de balisage avec un objet de la notation. Nous devons donc inventer un moyen de dispersion de fragments de texte brut autour de nos objets, à l'aide de "contenu" des tableaux qui peuvent contenir un mélange de chaînes de caractères et des objets imbriqués.

D'autre part, si vous avez typique d'une hiérarchie d'objets et que vous souhaitez représenter dans un flux JSON est mieux adapté à cette tâche que le HTML.

{
    "firstName": "Homer",
    "lastName": "Simpson",
    "relatives": [ "Grandpa", "Marge", "The Boy", "Lisa", "I think that's all of them" ]
} 

Voici l'logiquement équivalent XML:

<Person>
    <FirstName>Homer</FirstName>
    <LastName>Simpsons</LastName>
    <Relatives>
        <Relative>Grandpa</Relative>
        <Relative>Marge</Relative>
        <Relative>The Boy</Relative>
        <Relative>Lisa</Relative>
        <Relative>I think that's all of them</Relative>
    </Relatives>
</Person>

JSON ressemble plus à des structures de données que nous déclarer dans les langages de programmation. Aussi, il a moins redondants répétition des noms.

Mais le plus important de tous, il a une manière définie de la distinction entre un "record" (non ordonnée d'éléments, identifiés par des noms) et d'une "liste" (articles commandés, identifié par la position). Un objet de la notation est pratiquement inutile sans une telle distinction. Et XML n'a pas une telle distinction! Dans mon exemple de XML <Person> est un record et <Relatives> est une liste, mais ils ne sont pas identifiés comme tels par la syntaxe.

Au lieu de cela, XML a des "éléments" et "attributs". Cela ressemble le même genre de distinction, mais il ne l'est pas, parce que les attributs ne peuvent avoir des valeurs de chaîne. Ils ne peuvent pas être imbriqués les objets. Donc je ne pouvais pas avoir appliqué cette idée à l' <Person>, parce que je ne devrait pas avoir à tourner <Relatives> dans une seule chaîne.

À l'aide d'un schéma externe ou supplémentaire attributs définis par l'utilisateur, vous pouvez formaliser une distinction entre les listes et les dossiers de XML. L'avantage de JSON est que le faible niveau de la syntaxe a cette distinction construit en elle, donc c'est très succincte et universelle. Cela signifie que JSON est plus "auto décrivant" par défaut, ce qui est un objectif important de les deux formats.

Donc, JSON doit être le premier choix pour objet de notation, où XML du sweet spot est le balisage de document.

Malheureusement pour XML, nous avons déjà le HTML comme le numéro un mondial de l'rich text markup language. Une tentative a été faite pour reformuler HTML en termes de XML, mais il n'y a pas beaucoup d'avantage dans ce.

Donc, XML devrait (à mon avis) ont été un joli marché de niche de la technologie, les mieux adaptés uniquement pour inventer votre propre texte riche langages de balisage si vous ne souhaitez pas utiliser le format HTML pour une raison quelconque. Le problème était que, en 1998, il y avait encore beaucoup de battage médiatique sur le Web, XML et est devenu populaire en raison de sa ressemblance superficielle avec HTML. C'était une drôle de choix de conception d'essayer de les appliquer à des données hiérarchiques d'une syntaxe réellement conçu pour la pratique de balisage.

27voto

Guffa Points 308133

Ils sont tous les deux formats de données pour les données hiérarchiques, si bien que la syntaxe est tout à fait différent, la structure est similaire. Exemple:

JSON:

{
  "persons": [
    {
      "name": "Ford Prefect",
      "gender": "male"
    },
    {
      "name": "Arthur Dent",
      "gender": "male"
    },
    {
      "name": "Tricia McMillan",
      "gender": "female"
    }
  ]
}

XML:

<persons>
  <person>
    <name>Ford Prefect</name>
    <gender>male</gender>
  </person>
  <person>
    <name>Arthur Dent</name>
    <gender>male</gender>
  </person>
  <person>
    <name>Tricia McMillan</name>
    <gender>female</gender>
  </person>
</persons>

Le format XML est plus avancé que ce qui est illustré par l'exemple, bien que. Vous pouvez par exemple ajouter des attributs à chaque élément, et vous pouvez utiliser des espaces de noms pour les éléments de partition. Il existe également des normes pour définir le format d'un fichier XML, le langage XPATH pour interroger des données XML et XSLT pour transformer des données XML dans la présentation des données.

Le format XML a été autour depuis un certain temps, donc il y a beaucoup de logiciels développés pour cela. Le format JSON est tout à fait nouvelle, il y a donc beaucoup moins de soutien pour elle.

Alors que XML a été développé comme un indépendant, le format de données JSON a été développé spécifiquement pour une utilisation avec du Javascript et AJAX, de sorte que le format est exactement le même comme un Javascript object littérale (qui est, c'est un sous-ensemble du code Javascript, comme, par exemple, ne peut pas contenir des expressions de déterminer les valeurs).

23voto

Mark Baker Points 79

La différence fondamentale entre XML et JSON est que le XML est un méta-langage et JSON est un langage de balisage. C'est, d'une syntaxe XML est conçu spécifiquement pour n'ont pas de sémantique. Élément particulier les noms ne signifient rien jusqu'à ce qu'un traitement particulier des processus d'application d'une façon particulière. En revanche, la syntaxe JSON a une sémantique spécifique construit en: trucs entre {} est un objet, des trucs entre [] est un tableau, etc.

Un parser JSON, par conséquent, ne sait exactement ce que chaque document JSON moyens. Un analyseur XML ne sait comment séparer de balisage de données. Pour faire face à la signification d'un document XML, vous devez écrire du code supplémentaire.

Pour illustrer ce point, permettez-moi d'emprunter Guffa de l'exemple:

{   "persons": [
  {
    "name": "Ford Prefect",
    "gender": "male"
 },
 {
   "name": "Arthur Dent",
   "gender": "male"
  },
  {
    "name": "Tricia McMillan",
    "gender": "female"
  }   ] }

L'équivalent XML il donne n'est pas vraiment la même chose, puisque tout le JSON exemple est sémantiquement complet, le XML doivent être interprétées d'une manière particulière à avoir le même effet. En effet, le JSON est un exemple utilise un établi langage de balisage dont la sémantique est déjà le savoir, alors que l'exemple de XML crée un tout nouveau langage de balisage sans aucune sémantique prédéfinie.

Une meilleure XML équivalent serait de définir un (fictif) XJSON langue avec la même sémantique que JSON, mais en utilisant la syntaxe XML. Il pourrait ressembler à quelque chose comme ceci:

<xjson>   
  <object>
    <name>persons</name>
    <value>
      <array>
         <object>
            <name>name</name>
            <value>Ford Prefect</value>
            <name>gender</name>
            <value>male</value>
         </object>
         <object>
            <name>name</name>
            <value>Arthur Dent</value>
            <name>gender</name>
            <value>male</value>
         </object>
         <object>
            <name>name</name>
            <value>Tricia McMillan</value>
            <name>gender</name>
            <value>female</value>
         </object>
      </array>
    </value>   
  </object> 
 </xjson>

Une fois que vous avez écrit un XJSON processeur, il peut faire exactement ce que JSON processeur n', pour tous les types de données JSON peut représenter, et vous pourriez traduire de données sans perte entre JSON et XJSON.

Donc, pour se plaindre que XML n'a pas la même sémantique que JSON, c'est manquer le point. La syntaxe XML est sematics-gratuit de par leur conception. Le point est de fournir un sous-jacent de la syntaxe qui peut être utilisé pour créer des langages de balisage avec toute la sémantique que vous voulez. Cela rend XML idéal pour faire des ad-hoc des données et les formats de document, parce que vous n'avez pas à construire des analyseurs syntaxiques pour eux, vous avez juste à écrire un processeur pour eux.

Mais l'inconvénient de XML est que la syntaxe est détaillé. Pour tout langage de balisage que vous voulez créer, vous pouvez venir avec un beaucoup plus succincte de la syntaxe qui exprime la sémantique particulière de votre langue particulière. Ainsi, JSON syntaxe est beaucoup plus compact que mon hypothétique XJSON ci-dessus.

Il s'ensuit que, pour vraiment largement utilisé formats de données, le temps supplémentaire requis pour créer une syntaxe unique et d'écrire un analyseur syntaxique pour que la syntaxe est compensée par la plus grande concision et la plus intuitive de la syntaxe de la coutume markup language. Il en résulte également que souvent, il est plus logique d'utiliser JSON, avec sa sémantique, que de faire des tas de langages de balisage XML pour laquelle vous devez ensuite mettre en œuvre la sémantique.

Il s'ensuit également qu'il est logique de prototype de certains types de langages et de protocoles XML, mais, une fois que la langue ou le protocole entre en utilisation courante, de réfléchir à la création d'un plus compact et plus expressif syntaxe personnalisés.

Il est intéressant, comme une note de côté, que SGML reconnu ce fait et a fourni un mécanisme pour spécifier réduit le balisage d'un document SGML. Ainsi, vous pouvez réellement écrire une DTD SGML pour la syntaxe JSON qui permettrait à un document JSON à être lu par un analyseur SGML. XML supprimé cette fonctionnalité, ce qui signifie que, aujourd'hui, si vous voulez une syntaxe compacte pour un langage de balisage, vous devez laisser XML derrière, comme JSON n'.

4voto

Michael Mrozek Points 44120

Ce sont deux manières différentes de représenter des données, mais elles sont assez différentes. Les pages wikipedia pour JSON et XML donnent quelques exemples de chacun, et il y a un paragraphe de comparaison

3voto

Fitzchak Yitzchaki Points 4896

Ce sont deux formats de représentation de l'information. Alors que JSON a été conçu pour être plus compact, XML a été conçu pour être plus lisible.

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