Ich dachte, XML ist sehr portabel und kann als Minidatenbank verwendet werden. Ich habe gesehen, dass XML überall verwendet wird. Ich sehe sogar große Unternehmen, die zu JSON wechseln . Sogar Microsoft hat Unterstützung für JSON integriert. Was ist der ganze Hype um JSON?
155
Antworten:
Da JSON von JavaScript nativ erkannt wird, ist es im Grunde genommen sehr leicht, minimalistisch und sehr portabel, da es nur auf zwei grundlegenden Strukturen beruht:
quelle
XML beginnt erst dann wirklich zu leuchten, wenn Sie verschiedene Namespace-Schemas miteinander mischen. Dann fällt JSON allmählich ab. Wenn Sie jedoch nur ein Serialisierungsformat für Ihre Daten benötigen, ist JSON kleiner, leichter, besser lesbar und im Allgemeinen schneller als XML.
quelle
Ich finde, dass ein großer Vorteil von JSON gegenüber XML darin besteht, dass ich mich nicht entscheiden muss, wie die Daten formatiert werden sollen. Wie einige gezeigt haben, gibt es zahlreiche Möglichkeiten, selbst einfache Datenstrukturen in XML zu erstellen - als Elemente, als Attributwerte usw. Dann müssen Sie es dokumentieren, ein XML-Schema schreiben oder NG oder einen anderen Mist entspannen ... Es ist ein Durcheinander.
XML mag seine Vorzüge haben, aber für den grundlegenden Datenaustausch ist JSON viel kompakter und direkter. Als Python-Entwickler gibt es keine Impedanzfehlanpassung zwischen den einfachen Datentypen in JSON und in Python. Wenn ich also einen serverseitigen Handler für eine AJAX-Abfrage schreiben würde, in der nach den Schneebedingungen für ein bestimmtes Skigebiet gefragt wird, würde ich ein Wörterbuch wie folgt erstellen:
Bei der Übersetzung über JSON (unter Verwendung einer Bibliothek wie 'simplejson' für Python) sieht die resultierende JSON-Struktur nahezu identisch aus (außer in JSON werden Boolesche Werte in Kleinbuchstaben geschrieben).
Das Dekodieren dieser Struktur erfordert nur einen JSON-Parser, unabhängig davon, ob es sich um Javascript oder Objective-C für eine native iPhone-App oder C # oder einen Python-Client handelt. Die Floats würden als Floats interpretiert, die Strings als Strings und die Booleschen als Boolesche Werte. Bei Verwendung der 'simplejson'-Bibliothek in Python
simplejson.loads(some_json_string)
würde mir eine Anweisung eine vollständige Datenstruktur zurückgeben, wie ich sie gerade im obigen Beispiel erstellt habe.Wenn ich XML schreiben würde, müsste ich mich entscheiden, ob ich Elemente oder Attribute ausführen möchte. Beide folgenden Punkte sind gültig:
Ich muss also nicht nur über die Daten nachdenken, die ich möglicherweise an den Client senden möchte, sondern auch darüber, wie ich sie formatieren soll. XML ist zwar einfacher als einfaches SGML, da es strengere Regeln enthält, bietet jedoch zu viele Möglichkeiten, um über diese Daten nachzudenken. Dann müsste ich es generieren. Ich konnte nicht einfach ein Python-Wörterbuch (oder eine andere einfache Datenstruktur) nehmen und sagen: "Mach dich selbst zu meinem XML". Ich konnte kein XML-Dokument erhalten und sofort sagen, dass Sie sich in Objekte und Datenstrukturen verwandeln sollen, ohne einen benutzerdefinierten Parser zu schreiben oder ohne den zusätzlichen Aufwand für XML Schema / Relax NG und andere solche Probleme zu erfordern.
Das kurze daran ist, dass es viel einfacher und direkter ist, Daten in JSON zu kodieren und zu dekodieren, insbesondere für den schnellen Austausch. Dies gilt möglicherweise eher für Personen mit einem dynamischen Sprachhintergrund, da die in JavaScript / JSON integrierten Basisdatentypen (Listen, Wörterbücher usw.) direkt denselben oder ähnlichen Datentypen in Python, Perl, Ruby usw. zugeordnet sind.
quelle
Die Leistung von JSON unterscheidet sich in den meisten Anwendungsfällen nicht wesentlich von XML. JSON ist für gut verschachtelte Strukturen nicht gut geeignet und lesbar. Sie werden auf]]]}] stoßen, was das Debuggen schwierig macht
quelle
Es ist leicht im Vergleich zu XML. Wenn Sie skalieren müssen, reduzieren Sie Ihren Bandbreitenbedarf!
Vergleiche JSON
zu XML:
quelle
Nur eine Anekdote aus meiner persönlichen Erfahrung:
Ich habe ein kleines Javascript-Verzeichnis geschrieben, zuerst mit den Daten in XML, und es dann für die Verwendung von JSON angepasst, damit ich sie nebeneinander ausführen und die Geschwindigkeit mit Firebug vergleichen kann. Der JSON war ungefähr dreimal schneller (350-400 ms gegenüber 1200-1300 ms, um alle Daten anzuzeigen). Wie andere angemerkt haben, ist der JSON auch viel augenschonender und die Dateigröße war aufgrund des schlankeren Markups gut 25% kleiner.
quelle
Mit Attributen ist XML nett. Aus irgendeinem Grund besteht hausgemachtes XML im Allgemeinen zu 100% aus Elementen und ist hässlich.
quelle
Der einfache Verbrauch durch JavaScript kann einer der Gründe sein.
quelle
JSON eignet sich aufgrund seiner Größe und Benutzerfreundlichkeit am besten für die Verwendung von Daten in Webanwendungen von Webservices, insbesondere aufgrund der integrierten Unterstützung in JavaScript . Stellen Sie sich den Rechenaufwand für das Parsen eines XML-Fragments im Vergleich zur sofortigen Suche in JSON vor.
Ein sehr gutes Beispiel ist JSON-P. Sie können Daten von einem Webservice zurückerhalten, der in einen Rückruffunktionsaufruf eingebunden ist, z. B.
my_callback({"color": "blue", "shape":"square"});
in einem dynamisch generierten<script>
Tag, damit die Daten direkt in der Funktion verwendet werden könnenmy_callback()
. Es gibt keine Möglichkeit, mit XML an diese Annehmlichkeit heranzukommen.XML ist das Format der Wahl für große Dokumente, bei denen Sie ein Framework zum Rendern von Datenseiten in mehreren Formaten mit XSLT haben. XML kann unter anderem auch mit Anwendungskonfigurationsdateien zur besseren Lesbarkeit verwendet werden.
quelle
Niemand hier hat den Hauptvorteil von XML erwähnt: Validierungsregeln (DTD, XSD). Meine Schlussfolgerungen, nachdem ich beide verwendet habe:
Natürlich wird ein JSON-Schema entwickelt, aber Sie werden nirgendwo eine integrierte Unterstützung dafür finden.
Ich bin ein Fan von beiden, sie haben nur unterschiedliche Stärken.
quelle
Da es für die meisten Sprachen JSON-Codierer und -Decodierer gibt, gibt es keinen Grund, JSON NICHT für Anwendungen zu verwenden, bei denen dies sinnvoll ist (und das sind wahrscheinlich 90% der Anwendungsfälle für XML).
Ich habe sogar von JSON-Zeichenfolgen gehört, die in großen SQL-Datenbanken verwendet werden, um Schemaänderungen zu vereinfachen.
quelle
Ganz ehrlich, es gibt nicht so viele Unterschiede zwischen JSON und XML, da sie alle Arten von Daten darstellen können. XML ist jedoch syntaktisch größer als JSON und daher schwerer als JSON.
quelle
JSON weist keine Impedanzfehlanpassung mit der JavaScript-Programmierung auf. JSON kann Ganzzahlen, Zeichenfolgen, Listen und Arrays enthalten. XML besteht nur aus Elementen und Knoten, die in Ganzzahlen usw. analysiert werden müssen, bevor sie verwendet werden können.
quelle
Beide sind großartig und sehr tragbar. JSON hat jedoch an Popularität gewonnen, da es in den meisten Fällen in weniger Zeichen serialisiert wird (was sich in einer schnelleren Lieferzeit niederschlägt) und da es mit der JavaScript-Objektsyntax übereinstimmt, kann es direkt in ein In-Memory-Objekt übersetzt werden, was Ajax erheblich vereinfacht implementieren.
XML ist immer noch großartig. JSON ist im Vergleich zu XML nur das "Neueste und Beste".
quelle
Mit JavaScript leicht zu analysieren und leichtgewichtig (ein Dokument in JSON ist kleiner als ein XML-Dokument, das dieselben Daten enthält.)
quelle
JSON ist effektiv serialisiertes JavaScript, indem Sie (aJsonString) direkt in ein JavaScript-Objekt auswerten können. Innerhalb eines Browsers ist es ein Kinderspiel. JSON ist perfekt für JavaScript geeignet. Gleichzeitig ist JavaScript eine sehr lose typisierte dynamische Sprache und kann nicht alle spezifischen Typinformationen nutzen, die in einem Xml / Xsd-Dokument verfügbar sind. Diese zusätzlichen Metadaten (die sich hervorragend für die Interoperabilität eignen) behindern JavaScript und machen die Arbeit langwieriger und umständlicher.
Größe gegen Leistung
Wenn Sie sich in einem Browser befinden, lässt sich JSON schneller serialisieren / deserialisieren, da es einfacher, kompakter und vor allem nativ unterstützt wird. Ich habe einige Benchmarks für die Northwind-Datenbank verfügbar , die die Größe und Geschwindigkeit zwischen den verschiedenen verfügbaren Serializern vergleichen. In der Basisklassenbibliothek ist der XML DataContract-Serializer von Microsoft über 30% schneller als der JSON- Serializer . Dies hat zwar mehr mit dem Aufwand zu tun, den Microsoft in den XML-Serializer gesteckt hat, da ich einen JsonSerializer entwickeln konnte , der mehr als 2,6- mal schneller ist als der XML- Serializer . Bei Nutzdaten, die auf den Benchmarks basieren, sieht es so aus, als ob XML ungefähr mehr als das Zweifache beträgtdie Größe von JSON. Dies kann jedoch schnell zum Erliegen kommen, wenn Ihre XML-Nutzdaten viele verschiedene Namespaces innerhalb desselben Dokuments verwenden.
quelle
XML ist in den meisten Situationen aufgeblähtes Schlangenöl. JSON bietet Ihnen die meisten Vorteile ohne Aufblähen.
quelle
Ein großer Vorteil außer den hier genannten. Für dieselben Daten gibt es mehrere Möglichkeiten, sie als XML-Datei darzustellen, aber nur eine Möglichkeit mit JSON, um Mehrdeutigkeiten zu beseitigen :)
quelle
{"colors":["red","green","blue"],"systems":["windows","mac"]}
vs.{"entries":[{"type":"color","value":"red"},{"type":"system","value":"mac"}]}
Ich bin bei weitem kein Experte, aber von den verschiedenen Unternehmen, für die ich gearbeitet habe, verwenden wir XML im Allgemeinen in kleinen Datenumgebungen oder Konfigurationswerten (web.config ist ein gutes Beispiel).
Wenn Sie über große Datenmengen verfügen, möchten Sie im Allgemeinen über diese Daten berichten. Und XML ist keine großartige Quelle für Berichte. Im Großen und Ganzen scheint es, als sei eine Transaktionsdatenbank einfacher zu melden / zu suchen als XML.
Macht das Sinn? Wie ich oben sagte, bin ich kein Experte, aber meiner Erfahrung nach scheint dies der Fall zu sein. Ich glaube auch, dass Microsoft die JSON-Unterstützung integriert hat, da Entwickler häufig auf clientseitige oder skriptbasierte Aktionen umsteigen, um die visuelle Darstellung der Benutzeroberfläche ( Ajax ) zu verbessern. Microsoft Ajax wurde nicht so häufig verwendet wie andere Bibliotheken wie jQuery und MooTools ( Yahoo YUI ist auch in dieser Mischung) aufgrund ihrer schönen Integration von serialisierbaren Objekten mit JSON.
Ich schreibe jetzt Code, der den JSON-Serializer in meinem VB-Code implementiert. Es ist viel zu einfach und vom Standpunkt des Upgrades / Modifizierens aus kann man es nicht übertreffen. Es ist Microsofts Art, uns von VS abhängig zu machen, denke ich. Ich habe kürzlich eine Unternehmensanwendung auf Ajax (über jQuery) und das JSON-Format konvertiert. Es dauerte ungefähr 2 Wochen, um dies zu tun. Ich danke Microsoft tatsächlich für die Integration, denn ohne sie hätte ich ziemlich viel zusätzlichen Code schreiben müssen.
quelle