Zum Inhalt springen

JSON ⇄ XML umwandeln

JSON ⇄ XML

Wandelt zwischen JSON und XML um, mit einstellbarer Behandlung von Attributen, Arrays und Textknoten.

Konvertiert XML nach JSON und zurück. Es gibt keine kanonische Abbildung zwischen den beiden – XML hat Attribute, geordneten gemischten Inhalt und Namespaces, JSON hat nichts davon –, also macht diese Seite ihre Entscheidungen explizit und lässt Sie sie ändern, statt eine Konvention zu verstecken.

🔒 Läuft vollständig in Ihrem Browserjsonxmlconvert
Richtung

Ein Attribut sieht dann aus wie `@id`.

Wohin der eigene Text eines Elements kommt.

XML

JSON

Zwischen XML und JSON gibt es keine kanonische Abbildung, deshalb sind die Entscheidungen hier ausgeschrieben: Ein Attribut wird zu einem Schlüssel wie @name und der eigene Text eines Elements landet in #text, während gleichnamige Geschwister zu einem Array werden. Genau dort kann der Rundweg Information verlieren: Eine Liste, die zufällig ein einziges Element hat, kommt als einzelnes Objekt zurück, solange „immer Arrays verwenden“ nicht eingeschaltet ist.

Eingang

215 Zeichen

Ausgang

399 Zeichen

So funktioniert es

  1. Wählen Sie die Richtung

    Die beiden Seiten behalten getrennte Eingaben, sodass das Hin- und Herwechseln nicht verliert, was Sie eingefügt hatten.

  2. Legen Sie Attributpräfix und Textschlüssel fest

    `@` und `#text` sind die verbreitete Konvention (fast-xml-parser, xml2js und andere verwenden sie), aber wenn das JSON, das Sie erzeugen müssen, etwas anderes verwendet, ändern Sie es hier statt in der Nachbearbeitung.

  3. Schalten Sie „immer Arrays“ ein, wenn das JSON in Code geht

    Das ist der verlustbehaftete Teil der Abbildung: Ein `<item>` wird zu einem Objekt, zwei werden zu einem Array, und der konsumierende Code muss beides behandeln. Arrays zu erzwingen macht die Form stabil, um den Preis einiger Weitschweifigkeit.

Häufige Fragen

Gibt mir der Hin- und Rückweg mein XML zurück?

Strukturell meist, Byte für Byte nein. Kommentare, Verarbeitungsanweisungen und der Unterschied zwischen `<a/>` und `<a></a>` überleben nicht, und gemischter Inhalt – Text und Elemente verschränkt – lässt sich in JSON nicht so darstellen, dass die Reihenfolge erhalten bleibt.

Warum ist `12` ein String?

Weil XML keine Typen hat – jeder Wert in einem Dokument ist Text, und nur ein Schema sagt etwas anderes. Der Schalter Umwandeln rät Zahlen und Booleans, aber es ist ein Raten: Ein Produktcode `0123` wird zu 123, und ein Versionsstring `1.10` wird zu 1.1.

Was geschieht mit Namespaces?

Präfixe bleiben Teil des Elementnamens – `soap:Body` wird zum Schlüssel `soap:Body` –, und `xmlns`-Deklarationen kommen als gewöhnliche Attribute durch. Nichts wird zu einem Namespace-URI aufgelöst, sodass zwei Dokumente, die verschiedene Präfixe für denselben Namespace verwenden, verschiedenes JSON ergeben.

Kann ich ihm eine SOAP-Antwort geben?

Ja, und das ist einer der häufigen Gründe, hier zu sein. Umschlag, Body und Nutzlast kommen alle als verschachtelte Objekte durch; die `@`-Schlüssel sind, wo die SOAP-Attribute landen.

Eingabe aus

Danach

Diese Tools nehmen an, was dieses hier erzeugt, das Ergebnis kann also direkt weiter.