JSON zu XML

Fügen Sie ein JSON-Dokument ein und erhalten Sie das entsprechende XML mit dem Namen des von Ihnen gewählten Wurzelelements, einer konsistenten Strategie für Arrays (wiederholte Elemente oder ein Wrapper), optionaler XML-Deklaration und schöner Einrückung. Nützlich, wenn ein Altsystem XML benötigt und Ihre upstream-Daten als JSON vorliegen.

So konvertieren Sie JSON in XML

  1. 1

    JSON einfügen

    Objekt oder Array auf der obersten Ebene. Sie geben dem Wurzelelement einen Namen.

  2. 2

    Nennen Sie das Wurzel-Element

    XML benötigt ein einzelnes Wurzelelement. Standard ist `<root>`; geben Sie ihm etwas Bedeutungsvolles wie `<users>` oder `<response>`.

  3. 3

    Wählen Sie die Array-Strategie

    "Wiederholte Elemente" (jedes Array-Element wird ein Geschwister-`<item>`) oder "Wrapper" (das Array geht in ein benanntes Wrapper-Element).

  4. 4

    Kopieren Sie das XML

    Optionale XML-Deklaration, richtige Einrückung und entitäts-escaped Werte für `<`, `>`, `&` und Anführungszeichen.

Beispiel: wiederholte Elemente

Eingabe:

{ "users": [ { "name": "Alice" }, { "name": "Bob" } ] }

Ausgabe:

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <users>
    <name>Alice</name>
  </users>
  <users>
    <name>Bob</name>
  </users>
</root>

Beispiel: Array-Wrapper

Gleiche Eingabe mit der Strategie “Arrays in <item> einwickeln”:

<root>
  <users>
    <item>
      <name>Alice</name>
    </item>
    <item>
      <name>Bob</name>
    </item>
  </users>
</root>

Typzuordnung

JSON XML
string Textinhalt, entitäts-escaped
integer / decimal Textinhalt (keine XML-Typannotation)
boolean true / false als Text
null leeres Element (<foo/>) oder weggelassen
array wiederholte Elemente oder Wrapper + Elemente
object geschachteltes Element mit Kind-Elementen

Attribute vs. Elemente

XML unterscheidet zwischen Attributen (<user id="1">) und Kind-Elementen (<user><id>1</id></user>). Der Konverter verwendet standardmäßig Elemente, sie sind verlustfrei für die Rückkonvertierung. Wenn Ihr nachgelagertes XML Attribute benötigt, verwenden Sie eine Schlüssel-Präfix-Konvention:

  • JSON-Schlüssel @id wird zu einem XML-Attribut id="..." im Elternelement.
  • JSON-Schlüssel #text wird zum Textinhalt des Elternelements.

Diese Konventionen stammen von BadgerFish und Parker-Mappings, den beiden gängigsten JSON-zu-XML-Standards.

Escape-Regeln

  • < -> &lt;
  • > -> &gt;
  • & -> &amp;
  • " -> &quot; (in Attributwerten)
  • ' -> &apos; (optional)
  • Bytes in UTF-8 werden beibehalten, im XML-Prolog deklariert.

Häufige Fehler

  • JSON-Array auf Wurzelebene. XML benötigt ein einzelnes Wurzelelement. Der Konverter wickelt ein Array in <root> (oder welchen Namen Sie wählen) ein.
  • Numerische Schlüssel. JSON {"1": "a"} ist zulässig; XML-Elementnamen dürfen nicht mit einer Ziffer beginnen. Der Konverter stellt Ziffern einen Unterstrich voran (_1) oder lässt Sie eine benutzerdefinierte Zuordnung definieren.
  • Gemischte Arrays. [1, "two", { "x": true }] hat keine saubere Zuordnung. In der Regel bedeutet dies, dass das JSON vor der Konvertierung normalisiert werden muss.
  • Große Dokumente. XML ist ausführlich, ein 10 MB JSON kann zu einem 20-30 MB XML werden. Erwägen Sie eine Streaming-Konvertierung für sehr große Payloads.

Häufig gestellte Fragen

Gemäß Spezifikation benötigt XML ein einzelnes Wurzelelement. Wenn Ihr JSON ein Array ist oder mehrere oberste Schlüssel hat, fasst der Konverter alles in einem Wurzelelement zusammen, das Sie benennen können (Standard <root>).

Ja. Verwenden Sie die @-Präfix-Konvention in Ihren JSON-Schlüsseln (z.B. "@id": 1) und diese Schlüssel werden zu Attributen. Andere Schlüssel bleiben als Kind-Elemente. Dies entspricht der BadgerFish-Zuordnung.

Zwei Strategien: wiederholte Geschwister-Elemente (jedes Element erhält den Elterntag als Tag), oder ein Wrapper mit <item>-Elementen darin. Wählen Sie die, die am besten zu dem XML-Schema passt, das Sie anvisieren.

Nein. Der Konverter gibt die XML-Deklaration (<?xml version="1.0"?>) aus, aber keinen DOCTYPE. Für XML, das einen DTD- oder XSD-Verweis benötigt, fügen Sie ihn manuell nach der Konvertierung hinzu.

Verwandte Tools

Tool in anderen Sprachen verfügbar