JSON vs XML: Which Data Format Should You Use?

XML dominated data interchange for over a decade. Then JSON showed up and changed everything. Here's why — and when XML is still the better choice.

JSONTech-TeamFebruary 20, 202510 min read

Eine kurze Geschichtsstunde

XML (eXtensible Markup Language) wurde 1998 geboren, als Java-Applets und SOAP-Webdienste die neueste Technologie waren. Es wurde als vereinfachte Teilmenge von SGML — der Metasprache hinter HTML — entwickelt und erfüllte seinen Zweck gut. Viele Jahre lang war XML der Standard für den Datenaustausch, Konfiguration, Dokumentenspeicherung und so ziemlich alles andere.

Dann, Anfang der 2000er Jahre, begannen Webentwickler, AJAX-Anwendungen zu erstellen, und erkannten, dass sie etwas Leichteres als XML benötigten, um Daten zwischen Browsern und Servern auszutauschen. Douglas Crockford formalisierte JSON um 2001-2002, und der Wandel war schnell. Bis 2010 verwendeten die meisten neuen REST-APIs JSON. Bis 2015 war es nicht einmal mehr eine Debatte.

Aber hier ist das Missverständnis, das viele haben: XML hat nicht "verloren". Es zog sich in die Bereiche zurück, in denen es wirklich glänzt. Das Verständnis dieser Bereiche trennt eine durchdachte Architekturentscheidung vom Mitläufertum.

Syntaxvergleich

Lassen Sie uns dieselben Daten — eine Liste von Büchern — in beiden Formaten betrachten:

JSON

{
  "library": {
    "books": [
      {
        "isbn": "978-0-13-468599-1",
        "title": "The Pragmatic Programmer",
        "author": "David Thomas, Andrew Hunt",
        "year": 2019,
        "available": true,
        "tags": ["programming", "best-practices", "career"]
      },
      {
        "isbn": "978-0-596-51774-8",
        "title": "JavaScript: The Good Parts",
        "author": "Douglas Crockford",
        "year": 2008,
        "available": false,
        "tags": ["javascript", "programming"]
      }
    ]
  }
}

XML

<?xml version="1.0" encoding="UTF-8"?>
<library>
  <books>
    <book isbn="978-0-13-468599-1" available="true">
      <title>The Pragmatic Programmer</title>
      <author>David Thomas, Andrew Hunt</author>
      <year>2019</year>
      <tags>
        <tag>programming</tag>
        <tag>best-practices</tag>
        <tag>career</tag>
      </tags>
    </book>
    <book isbn="978-0-596-51774-8" available="false">
      <title>JavaScript: The Good Parts</title>
      <author>Douglas Crockford</author>
      <year>2008</year>
      <tags>
        <tag>javascript</tag>
        <tag>programming</tag>
      </tags>
    </book>
  </books>
</library>

Die XML-Version ist etwa 40 % größer, und das ist typisch. Jedes Elementname erscheint zweimal (öffnende und schließende Tags), und Arrays benötigen Wrapper-Elemente. XML hat auch das Konzept von "Attributen" vs "Elementen" — beachten Sie, wie isbn und available Attribute des <book>-Tags sind, während andere Felder Kind-Elemente sind. Diese Flexibilität ist sowohl ein Merkmal als auch eine Quelle endloser Design-Debatten.

JSON hingegen hat einen Weg, Dinge zu tun: Schlüssel und Werte. Keine Unterscheidung zwischen Attributen und Elementen. Keine schließenden Tags. Weniger Zeremonie, weniger Mehrdeutigkeit.

Probieren Sie es selbst aus: Fügen Sie JSON in unseren JSON zu XML-Konverter ein, um das XML-Äquivalent sofort zu sehen. Oder konvertieren Sie in die andere Richtung mit XML zu JSON.

Funktionsvergleich

FunktionJSONXML
AusführlichkeitKompaktAusführlich (öffnende + schließende Tags)
LesbarkeitGut für DatenstrukturenGut für Dokumente
Kommentare❌ Nein✅ Ja (<!-- Kommentar -->)
Schema-ValidierungJSON-Schema (separate Spezifikation)XSD, DTD, RELAX NG (ausgereift, leistungsstark)
Namensraumunterstützung❌ Nein✅ Ja (vermeidet Namenskonflikte)
DatentypenStrings, Zahlen, Booleans, null, Objekte, ArraysAlles ist Text (Typen nur über Schema)
Attribute❌ Nein (nur Schlüssel)✅ Ja (Metadaten zu Elementen)
Gemischter Inhalt❌ Nein✅ Ja (Text + Markup vermischt)
TransformationManueller CodeXSLT (deklarative Transformationen)
AbfragespracheJSONPath, JMESPathXPath, XQuery (ausgereifter)
Parsing-GeschwindigkeitSchnell (einfache Grammatik)Langsam (komplexe Grammatik, Validierung)
Browser-native ParsingJSON.parse()DOMParser
Dateigröße (gleiche Daten)Kleiner (~60-70 % von XML)Größer (redundante Tags)
Tooling-ÖkosystemModern, wachsendAusgereift, umfangreich

Wann XML immer noch gewinnt

Ich weiß, es ist verlockend, XML vollständig abzulehnen. Widerstehen Sie diesem Impuls. Es gibt spezifische Bereiche, in denen XML nicht nur ausreichend, sondern wirklich überlegen ist.

1. Dokumentenmarkup und gemischter Inhalt

Das ist das Killermerkmal von XML. Betrachten Sie einen Absatz mit Inline-Formatierung:

<paragraph>
  Dies ist <bold>wichtiger</bold> Text mit einem
  <link href="/page">Hyperlink</link>, der darin eingebettet ist.
</paragraph>

Versuchen Sie, dies in JSON darzustellen. Sie würden mit etwas Horriblem enden — einem Array aus gemischten String- und Objektelementen oder einer Art von Markup-Escape-Syntax. JSON wurde für strukturierte Daten entwickelt, nicht für Dokumente. XML wurde für beides entwickelt.

Deshalb verwenden HTML (ein Verwandter von XML), DocBook, DITA und Publikationsformate alle XML-basierte Syntax. EPUB-Dateien sind XML. Microsoft Office-Dateien (.docx, .xlsx) sind gezippte XML. Die Dokumentenwelt läuft auf XML, und JSON wird diesen Thron nicht übernehmen.

2. SOAP-Webdienste

Unternehmenssysteme, insbesondere im Bankwesen, Gesundheitswesen und in der Regierung, verlassen sich immer noch stark auf SOAP. Diese Dienste verwenden XML mit strengen Schemata (WSDL), und sie migrieren nicht so schnell zu REST. Wenn Sie mit Legacy-Enterprise-APIs integrieren, werden Sie mit XML arbeiten, ob es Ihnen gefällt oder nicht.

3. XSLT-Transformationen

XSLT ermöglicht es Ihnen, XML-Dokumente deklarativ zu transformieren — umstrukturieren, filtern, formatieren — ohne prozeduralen Code zu schreiben. Es ist leistungsstark für die Generierung von HTML-Berichten aus XML-Daten, die Umwandlung zwischen XML-Schemata und die Verarbeitung von Dokumentenpipelines. JSON hat kein Äquivalent, das auch nur annähernd an die Fähigkeiten von XSLT heranreicht.

4. Namensräume

Wenn Sie Daten aus mehreren Quellen in einem einzigen Dokument ohne Namenskonflikte kombinieren müssen, lösen XML-Namensräume dies elegant:

<root xmlns:hr="http://example.com/hr"
      xmlns:fin="http://example.com/finance">
  <hr:employee>
    <hr:name>Alice</hr:name>
    <fin:salary currency="USD">95000</fin:salary>
  </hr:employee>
</root>

JSON hat kein Konzept von Namensräumen. Wenn zwei APIs denselben Schlüsselnamen mit unterschiedlichen Bedeutungen verwenden, sind Sie auf sich allein gestellt, um den Konflikt zu lösen.

5. RSS, Atom und SVG

RSS- und Atom-Feeds sind XML. SVG-Grafiken sind XML. Diese Formate sind tief im Web-Ökosystem verankert und ändern sich nicht. Wenn Sie eines dieser Formate generieren oder konsumieren, benötigen Sie XML-Unterstützung.

Wann JSON gewinnt

Für die meisten modernen Entwicklungsaufgaben ist JSON die pragmatische Wahl. Hier sind die Bereiche, in denen es eindeutig dominiert:

1. REST-APIs

Die Zahlen sprechen für sich. Laut verschiedenen API-Umfragen verwenden über 90 % der öffentlichen APIs JSON als ihr primäres Antwortformat. Es ist leichter auf der Leitung, schneller zu parsen und lässt sich direkt auf native Datenstrukturen in JavaScript, Python, Ruby, Go und den meisten anderen Sprachen abbilden.

// Aufruf einer REST-API — die Antwort ist bereits JSON
const response = await fetch("https://api.github.com/users/octocat");
const user = await response.json();
console.log(user.login); // "octocat"

Mit XML müssten Sie einen DOM-Parser instanziieren, Knoten durchlaufen und den Textinhalt manuell extrahieren. Mit JSON rufen Sie .json() auf und erhalten ein natives Objekt. Der Unterschied im Entwicklererlebnis ist enorm.

2. NoSQL-Datenbanken

MongoDB, CouchDB, DynamoDB, Firestore, Elasticsearch — das gesamte NoSQL-Ökosystem basiert auf JSON (oder JSON-ähnlichen) Dokumenten. Wenn Ihre Daten bereits in JSON vorliegen, ist das Speichern in einer Dokumentendatenbank praktisch reibungslos.

3. Mobile und Frontend-Anwendungen

Mobile Apps müssen effizient mit Bandbreite und Akku umgehen. Die kleinere Payload-Größe von JSON und das schnellere Parsing übersetzen sich direkt in eine bessere App-Leistung. Sowohl iOS (Codable) als auch Android (Gson, Moshi, Kotlin Serialization) verfügen über hervorragende JSON-Bibliotheken.

4. Konfiguration (mit Vorbehalten)

package.json, tsconfig.json, .eslintrc.json — JSON ist überall im JavaScript-Tooling-Ökosystem. Das Fehlen von Kommentaren ist hier ein echtes Problem, weshalb viele Tools jetzt JSONC oder JSON5 akzeptieren. Für komplexere Konfigurationen empfehle ich, YAML als Alternative zu betrachten.

5. Echtzeitkommunikation

WebSocket-Nachrichten, Server-Sent Events und Echtzeitdatenströme verwenden nahezu universell JSON. Die Kompaktheit des Formats und das native Browser-Parsen machen es ideal für den Hochfrequenz-Datenaustausch.

Arbeiten Sie mit beiden Formaten? Unsere JSON zu XML und XML zu JSON Konverter erleichtern die Übersetzung zwischen ihnen. Versuchen Sie, Ihre Daten einzufügen und sehen Sie die Ausgabe sofort.

Der Branchenwechsel in Zahlen

Der Wechsel von XML zu JSON war dramatisch und gut dokumentiert:

  • Stack Overflow Trends: Fragen, die mit "json" gekennzeichnet sind, überholten "xml" um 2013 und übersteigen sie jetzt ungefähr 2:1.
  • Öffentliche API-Formate: Daten von ProgrammableWeb zeigten, dass JSON XML als am häufigsten angebotenes API-Format um 2011 überholte. Heute dominiert JSON bei weitem.
  • npm-Ökosystem: Die beste JSON-Parsing-Bibliothek (eingebautes JSON.parse) hat keine Abhängigkeiten und wird mit jeder JavaScript-Laufzeit ausgeliefert. XML-Parsing erfordert in den meisten Sprachen Drittanbieterbibliotheken.
  • Neue Spezifikationen: Die meisten neuen Datenstandards (JSON-LD, GeoJSON, JSON-Schema, JWT) basieren auf JSON. XML-basierte Spezifikationen befinden sich größtenteils im Wartungsmodus.

Das gesagt, Branchen wie das Gesundheitswesen (HL7, FHIR verwendet teilweise XML), Verlagswesen (EPUB, DITA), Regierung (viele Legacy-Systeme) und Finanzen (FIX-Protokoll, ISO 20022) verlassen sich immer noch stark auf XML. Wenn Sie in diesen Sektoren arbeiten, ist XML-Kenntnis keine Option.

Leistungsvergleich

Für eine typische Datenlast hier, wie die beiden Formate sich vergleichen:

MetrikJSONXML
Parse-Zeit (1MB, Node.js)~15ms~60ms (SAX) / ~150ms (DOM)
Serialisierungszeit~10ms~45ms
Payload-Größe (formatiert)1.0 MB1.5–1.7 MB
Payload-Größe (minifiziert)0.6 MB1.2 MB (Tags können nicht entfernt werden)
Gzipped-Größe~120 KB~140 KB (Abstand verringert sich mit Kompression)

Der gzipped Vergleich ist interessant — XMLs sich wiederholende Tags komprimieren tatsächlich recht gut, sodass der Größenunterschied nach der Kompression erheblich schrumpft. Wenn Sie gzipped Antworten bereitstellen (was Sie sollten), ist das Argument der Payload-Größe weniger überzeugend, als es zunächst erscheint. Der Unterschied in der Parsing-Geschwindigkeit bleibt jedoch erheblich.

Migrationstipps

Wenn Sie von XML zu JSON migrieren (eine häufige Aufgabe), hier sind einige Dinge, auf die Sie achten sollten:

  1. Attribute haben kein direktes Äquivalent. XML-Attribute werden typischerweise zu regulären JSON-Eigenschaften, manchmal mit einem @ von Konvertierungstools vorangestellt.
  2. Gemischter Inhalt ist schwer darzustellen. Wenn Ihr XML Text enthält, der mit Elementen vermischt ist, müssen Sie sich auf eine Konvention einigen (wie Arrays aus gemischten Strings und Objekten).
  3. Namensraum-Informationen gehen verloren. JSON hat kein Konzept von Namensräumen, sodass Sie Konflikte manuell behandeln müssen.
  4. Die Reihenfolge kann wichtig oder unwichtig sein. Die Reihenfolge von XML-Elementen ist signifikant. Die Reihenfolge von JSON-Objektschlüsseln ist technisch nicht garantiert (obwohl die meisten Implementierungen die Einfügereihenfolge beibehalten).
  5. Validieren Sie nach der Konvertierung. Verwenden Sie unseren JSON-Validator, um sicherzustellen, dass die konvertierte Ausgabe gültig ist, und das JSON-Vergleichstool, um die Datenintegrität zu überprüfen.

Das Urteil

Für die Mehrheit der modernen Webentwicklung ist JSON die richtige Standardwahl. Es ist einfacher, leichter, schneller zu parsen und wird nativ von Browsern unterstützt. Der Schwung des Ökosystems ist überwältigend.

Aber "verwenden Sie JSON für alles" ist ein schlechter Rat. XML bleibt die bessere Wahl für dokumentenorientierte Daten, gemischten Inhalt, komplexe Schema-Validierung, namensraumreiche Integrationen und Legacy-Enterprise-Systeme. Beide Formate zu kennen — und wann jedes angemessen ist — macht Sie zu einem gut abgerundeten Entwickler.

Nach meiner Erfahrung ist der beste Ansatz pragmatisch: Verwenden Sie das Format, das das Ökosystem, in dem Sie arbeiten, erwartet, und kämpfen Sie nicht gegen den Strom. Konvertieren Sie zwischen ihnen, wenn Sie müssen, und machen Sie weiter mit der Lösung des eigentlichen Problems.

Weiter erkunden:

Verwandte Tools