2012-09-10 13 views
12

Ich fand den Unterschied zwischen JSON und XML. Beide sind für den Datenaustausch zwischen Systemen gedacht, aber es gibt einen großen Unterschied zwischen JSON und XML, dass JSON leichter als XML ist. Aber ich bin nicht in der Lage, den tatsächlichen Grund zu finden, warum der JSON leicht ist. Was macht JSON leicht?Warum ist JSON leichter als XML?

Eine Antwort, die ich fand, ist, dass es in JSON nicht viel extra XML Markup gibt. Was bedeutet das eigentlich? Gibt es weitere Gründe, warum JSON leicht ist?

+1

Eine vollständige Antwort berücksichtigt alle drei der besten Antworten, die Sie erhalten haben. Wenn Sie versuchen, zwischen XML und JSON zu wählen, wäre es sinnvoll sich zu fragen, welchen Zweck es erfüllen soll. Wenn Sie eine kompakte Serialisierung für die Übertragung oder Massenspeicherung wünschen, ist JSON die richtige Wahl. Wenn Sie Dokumente manipulieren möchten, ist XML, wie Kerrek bemerkt, viel besser durch adhärente Technologien unterstützt. Wenn Sie das .NET-Framework verwenden, ist dies weniger wichtig, da LINQ praktisch alles abfragen/transformieren kann. –

+1

@PeterWone: Es gibt nichts wie "Top drei Antworten" auf StackOverflow, weil die Reihenfolge variiert je nach abgegebenen Stimmen. Um auf bestimmte Antworten zu verweisen, benennen Sie bitte den Autor oder geben Sie den Permalink an. Zum Zeitpunkt des Schreibens haben wir eine Antwort mit 21 Stimmen und drei Antworten mit je 5 Stimmen. Also welche sind die "Top Drei"? :) – KPM

+0

@KPM - ja, und das ist genau das, was ich meinte: die drei Top-Scoring-Antworten zum Zeitpunkt des Kommentars. Ich habe einen der Autoren genannt, und mein Kommentar war in der Lage, allein zu stehen; Ich erwähne diese Antworten nur als Höflichkeit gegenüber den Autoren. Wie auch immer, hier sind wir Jahre später und sie sind immer noch die Top-3-Antworten sowie die drei Top-Antworten. –

Antwort

27

Haben Sie an Beispielen von JSON- und XML-Dokumenten geschaut?

Während sowohl JSON als auch XML verwendet werden, um beliebige Bäume von Daten darzustellen, ist XML viel ausführlicher. Jedes Element in der Struktur hat einen Namen (den Namen des Elementtyps), und das Element muss in einem passenden Paar von Tags eingeschlossen sein. Im Gegensatz dazu drückt JSON Bäume in einer "verschachtelten Array" Art von Notation aus, die mit der von Javascript vergleichbar ist (in der Tat kann ein JSON-Dokument buchstäblich als Javascript geparst werden, um zu dem entsprechenden Array zu führen).

Werfen Sie einen Blick at the differences.

XML ist natürlich semantisch reicher wird, da Elemente mit einer beliebigen Anzahl von Attributen dekoriert werden, und Elemente gemischten Inhalt freien Textflusses und weiteren, verschachtelte Elemente enthalten können. Zum Beispiel würde der folgende Code-Schnipsel mühsam sein als JSON auszudrücken:

kann
<paragraph> 
    This is an entire paragraph of <emph>text</emph>. It is interspersed with 
    further, nested <emph>XML elements</emph>, as well as the occasional 
    <link href="http://stackoverflow.com/a/12346394/596781">hyperlink</link>. 
</paragraph> 

Auf der anderen Seite, Daten -ähnlichen Dokumente viel einfacher in JSON. Stellen Sie sich folgendes vor:

<properties> 
    <property type="int" name="ID">123</property> 
    <property type="date" name="birthday">19700101</property> 
    <references> 
     <url>http://stackoverflow.com/a/12346394/596781</url> 
     <doi>something.made.up</doi> 
    </references> 
</properties> 

Dies wird zu einem sehr kompakten JSON-Array.

Eine zweite Überlegung ist die Anzahl der Toolsets, die beide Formate umgeben. Während es bei JSON-Tools hauptsächlich um das Parsen von JSON-Daten geht, hat das W3C eine große Anzahl von adhärenten Technologien entwickelt, um XML auf systematische Weise zu manipulieren, wie XSLT und XPATH.

Kurz gesagt, und als eine sehr persönliche Meinung, würde ich sagen, dass XML über das Dokument und JSON über Daten ist. XML wird für große, strukturierte Dokumente natürlicher und nützlicher, während JSON oft das einfachere und weniger verbindliche Format für die Übertragung von Datensätzen ist.

+1

Mit XML würden Sie Datentypen in Ihrem Schema und nicht als Teil Ihrer Daten deklarieren. Ein besseres Beispiel für XML wäre '' –

+1

Viele der XML-Beispiele auf dem Link bieten sind ungültig und nicht wirklich ein fairer Vergleich zu den JSON, da sie absichtlich aufgebläht XML gemacht –

8

JSON-Notation ist Terser. XML wiederholt den Knotentyp im schließenden Tag, wohingegen JSON den Abschlussbereich nur mithilfe eines Stapels ableitet. XML unterstützt Namespaces, soweit ich weiß, JSON nicht. XML-Schemas enthalten in der Regel Typinformationen, aber es gibt keinen Grund dafür, dass dies mit JSON nicht möglich war. Es sollte angemerkt werden, dass der Anstieg von JSON zu einem nicht geringen Teil auf die Tatsache zurückzuführen ist, dass es in allen Aspekten, die tatsächlich sind, funktional äquivalent zu XML ist. Über den Draht verschwindet der Unterschied, sobald die LZW-Komprimierung ins Spiel kommt, weil XML sich gut in die Wörterbuchkomprimierung einfügt.

8

Das Datenmodell ist anders.Neben dem Mangel an Auszeichnungen, die Sie selbst bemerkt haben, JSON auch nicht über alle anderen XML-Funktionen, wie zum Beispiel:

  • Verarbeitungshinweise
  • Kommentare
  • Attribute

Daher Nicht nur die Daten selbst sind leichter, sondern auch jede Bibliothek, die das Datenmodell implementiert. Dies macht das Rendern, Parsen, Verarbeiten von JSON mit Nicht-JavaScript-Sprachen viel schneller. Für JavaScript, dann ist dies ein Kinderspiel, als JSON tatsächlicher JavaScript-Code ist, und somit viel mehr „leichte“ für einen JavaScript-Parser

7

Einfachheit

XML ist einfacher als SGML zu verarbeiten, aber JSON viel einfacher als XML. JSON hat eine viel kleinere Grammatik und bildet direkter auf die Datenstrukturen moderner Programmiersprachen ab.

Extensibility

JSON ist nicht erweiterbar, weil es nicht sein müssen. JSON ist keine Dokumentauszeichnungssprache. Daher ist es nicht erforderlich, neue Tags oder Attribute zu definieren, um darin enthaltene Daten darzustellen.

Interoperabilität

JSON hat die gleiche Interoperabilität Potential wie XML.

Offenheit

JSON ist mindestens so offen wie XML, vielleicht so, weil es nicht im Zentrum des Unternehmen/politischen Standardisierung Kämpfe ist.

Content link

3

Es gibt mehrere Faktoren im Spiel hier:

(a) das JSON-Datenmodell ist einfacher; es hat weniger verschiedene Arten von Objekten und sie haben weniger Eigenschaften.

(b) das JSON Datenmodell in die Daten näher ist Modelle gemeinsam Programmiersprachen wie Javascript, so dass weniger Datenkonvertierung erforderlich ist, wenn diese Sprachen

(c) die serialisierten Syntax von JSON Verwendung weniger Redundanz (ist weniger ausführlich) als die Syntax von XML.

Natürlich sind diese Unterschiede, weil JSON für einen anderen Zweck als XML entwickelt wurde.

3

Es ist nur um einen linearen Faktor kleiner. Das ist nicht wirklich kleiner. Nach der Komprimierung nehmen beide Formate ungefähr den gleichen Platz ein.

Denken Sie daran, dass Programme, die bereits XML verwenden, nicht einfacher werden, indem sie JSON auch zulassen, sie werden komplexer. Zusätzliche Standards verkomplizieren die Dinge nur, wenn Sie die alten Standards nicht loswerden und XML nicht bald verschwinden wird.

XML wurde um das Konzept eines Dokuments entwickelt. Bei JSON ging es mehr um einfache Datenstrukturen. JSON kümmert sich weniger um Standards, d. H.Es hat keine Schemata, daher ist die Portabilität schwieriger als für jemanden, der mit XML vertraut ist. Normalerweise, wenn ich einen ReSTful-Dienst verwenden muss, wird mir gesagt, dass ich den Code lesen oder die JSON-Daten selbst betrachten soll, um sie zu verstehen. I.e. implizite (und häufig wechselnde) Datenformate.

Beide Formate leiden unter dem Problem, dass sie in ihrer natürlichen Form nur Bäume darstellen können, keine Graphen von Daten. Ich mag kein Format. Sie scheinen beide halb fertig zu sein. Objektserialisierung löst mehr Probleme.

0

Warum sollten wir den Sicherheitsaspekt vergessen? Beim Übertragen von Daten über das Netzwerk ist XML sicherer, da wir den XML-Umschlag vorbereiten und eine SOAP-Anfrage stellen können.

Verwandte Themen