it-swarm.dev

Können wir XML vollständig durch JSON ersetzen?

Ich bin sicher, dass viele Entwickler mit XML und JSON vertraut sind, und sie Ich habe beide benutzt. Daher macht es keinen Sinn, kurz zu erklären, was sie sind und was ihr Zweck ist.

Wenn wir versuchen, ihre Konzepte abzubilden, können wir sagen (korrigieren Sie mich, wenn ich falsch liege):

  1. XML-Tags entsprechen JSON {}
  2. XML-Attribute entsprechen JSON-Eigenschaften
  3. Die XML-Tag-Sammlung entspricht JSON []

Das einzige, was ich mir vorstellen kann, was in JSON nicht existiert, ist XML Namespaces .

Die Frage ist, ob wir angesichts dieses Mappings und der Tatsache, dass JSON in diesem Mapping sehr viel leichter ist, eine Welt in Zukunft sehen können (oder zumindest theoretisch an eine Welt denken können) ohne XML, aber wenn JSON alles tut, was XML tut? Können wir JSON überall dort verwenden, wo XML verwendet wird?

PS: Bitte beachte, dass ich diese Frage gesehen habe. Es ist etwas ganz anderes als das, was ich hier frage. Bitte erwähnen Sie daher nicht Duplikate .

81
Saeed Neamati

Das, was XML seine Leistungsfähigkeit und einen Großteil seiner Komplexität verleiht, sind gemischte Inhalte. Sachen wie diese:

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

Versuchen Sie nicht einmal, dies in JSON zu tun oder in herkömmlichen Programmiersprachen zu manipulieren. Sie waren nicht für den Job konzipiert.

Diese Art von Frage kommt normalerweise von Leuten, die vergessen, dass das M in XML für Markup steht. Auf diese Weise können Sie einfachen Text verwenden und Markups hinzufügen, um strukturierten Text zu erstellen. Es ist auch für altmodische Daten sehr praktisch, aber dafür wurde es nicht entwickelt oder wo seine Hauptstärken liegen. Es gibt viele Möglichkeiten, mit einfachen Daten umzugehen, und JSON ist eine davon.

155
Michael Kay

Ich denke, der Hauptunterschied besteht in der Tatsache, dass XML so konzipiert ist, dass es sich mit seinen dtds und allem selbst erklärt.

Bei JSON müssen Sie viel von den Daten annehmen, die Sie empfangen.

32

Eine wörtliche Übersetzung in JSON ist oft weniger prägnant und weniger klar. Erwägen:

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

Die effektivste JSON-Darstellung, die ich davon gesehen habe:

{"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"}
         ]
     }
 ]}

Stellen Sie sich das nun für eine gesamte XML-Datei vor. Ich sage nicht, dass JSON seinen Platz nicht hat, aber XML sollte nicht ausgeschlossen werden.

21
cwallenpoole

JSON und XML sind beide Möglichkeiten zum Formatieren von Daten. Beide sind in der Lage, dies perfekt zu machen. Kann JSON also alles tun, was XML tut? Ja.

Aber ..... Eine relevantere Frage ist möglicherweise nicht, was XML/JSON kann, sondern was Sie tun können mit XML/JSON.

Es gibt verschiedene Dinge, die Sie tun können mit XML, die Sie meiner Meinung nach mit JSON nicht können, z. B. mit XLST übersetzen, mit XPath suchen und mit Schemas validieren. Alles sehr, sehr nützlich.

14
Qwerky

Es gibt viele Funktionen mit XSLT , die mit JSON möglicherweise nicht möglich sind. Wenn sie also nicht funktional gleichwertig sind, können sie sich nicht gegenseitig ersetzen.

11
StuperUser

Tatsache ist, wir werden lange mit beiden leben müssen, und ein JSON-Fanatiker zu sein, wird als "schädlich" angesehen.

8
Scott C Wilson

JSON ist ziemlich neu und wird von Legacy-Systemen nicht unterstützt. Das Aktualisieren älterer Systeme ist teuer und führt zu Fehlern. JSON wird XML in naher Zukunft nicht ersetzen.

7
Tom Squires

Das hängt von der Domain ab. In Bezug auf Webdienste? Absolut. Es ist äußerst beschämend, dass Anbieter immer noch SOAP auf ihre Kunden drücken. REST + JSON) den ganzen Weg.

Wenn Sie jetzt über komplexe, strukturierte Daten mit Stilinformationen wie Docbook oder einer anderen Implementierung sprechen? Das ist eine richtige Domain für XML.

6
Jason Lewis

Ich würde sagen, dass cwallenpoole einen ausgezeichneten Punkt macht. Während die meisten XML können in JSON übersetzt werden, ist es ein separater Punkt, ob dies besser ist.

JSON eignet sich für Datenstrukturen mindestens genauso gut wie XML und wahrscheinlich besser, aber XML liest sich beim Markieren von Textdokumenten viel natürlicher als JSON, wobei Tags in einem größeren Textfluss verwendet werden und nicht nur zur Abgrenzung einer Hierarchie von Feldern.

Während HTML 5 möglicherweise über einen eigenen Parser verfügt, bleiben Anwendungen wie DocBook erhalten.

6
ssokolow

Warum sollten Sie sich auf JSON beschränken, wenn YAML ein Super-Set ist und viel ausdrucksvoller und daher leistungsfähiger als XML oder JSON?.

Wenn Sie jedoch die richtigen Serialisierungs-Frameworks verwenden, sollten Sie in der Lage sein, alle oben genannten Formate mit ein paar einfachen Codezeilen zu serialisieren und zu de-serialisieren.

4
user7519

Es wird hässlich, wenn Sie versuchen, diese beiden Objekte in JSON zu modellieren:

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

Wenn man JSON verwendet, wie es in 99% der Fälle gewohnt ist, geht man verloren mit:

{ name: "John Doe" } 

Und jetzt müssen Sie einige Metastrukturen hinzufügen und die ganze Schönheit von JSON ist verschwunden, während Sie die Nachteile haben.

3
Michal Till

Ich weiß nicht, ob eine solche Funktion für JSON vorhanden ist, aber zumindest in .NET können Sie XML anhand eines bestimmten Schemas validieren. Das ist in meinen Augen ein wertvoller Vorteil von XML.

3
Grant Palin