XML zu JSON

XML und JSON modellieren Daten unterschiedlich: XML hat Attribute und gemischte Inhalte, JSON hat Objekte und Arrays. Eine verlustfreie Konvertierung benötigt eine Konvention. Dieses Tool bietet drei: kompakt (lässt Attribute weg), Badgerfish (Attribute unter @key, Text unter $) und literal (jedes XML-Element wird zu einem JSON-Objekt mit voller Treue). Wählen Sie denjenigen, der zu dem JSON-Verbraucher passt, den Sie anvisieren.

So konvertieren Sie XML zu JSON

  1. 1

    XML einfügen

    Jedes gut formatierte XML. Namensräume werden erhalten.

  2. 2

    Konvertierungsstil wählen

    Kompakt, Badgerfish oder literal/verlustfrei.

  3. 3

    Arrays behandeln

    Bestimmte Elemente immer als Arrays erzwingen (konfigurierbar).

  4. 4

    JSON-Ausgabe kopieren

    Schön formatiert oder minimiert, Ihre Wahl.

Die drei Stile im Vergleich

Eingabe:

<book id="1" lang="en">
  <title>1984</title>
  <author>Orwell</author>
</book>

Kompakt (lässt Attribute weg):

{
  "book": {
    "title": "1984",
    "author": "Orwell"
  }
}

Badgerfish (Attribute unter @, Text unter $):

{
  "book": {
    "@id": "1",
    "@lang": "en",
    "title": { "$": "1984" },
    "author": { "$": "Orwell" }
  }
}

Literal / JsonML-ähnlich (volle Treue):

{
  "book": {
    "@attributes": { "id": "1", "lang": "en" },
    "title": "1984",
    "author": "Orwell"
  }
}

Erzwungene Arrays

XML hat keine Möglichkeit zu sagen “das ist eine Liste von einem”. Eine Sequenz mit einem Element sieht identisch aus wie ein Skalar:

<items>
  <item>A</item>
</items>

Das kann entweder als {"item": "A"} oder {"item": ["A"]} serialisiert werden. Der Konverter ermöglicht es Ihnen, Elementnamen (per XPath) immer als Arrays zu kennzeichnen, sodass Ihr nachgelagerter JSON-Verbraucher konsistente Typen erhält.

Gemischte Inhalte

Gemischte Inhalte, Text, der mit Kind-Elementen durchmischt ist, ist der eine Ort, an dem jede XML-zu-JSON-Konvertierung Informationen verliert:

<p>Hallo <em>Welt</em>!</p>

Die meisten Stile lassen entweder Text weg oder fassen ihn zusammen. Der literale Stil bewahrt die Reihenfolge über ein Array:

{
  "p": {
    "@content": ["Hallo ", { "em": "Welt" }, "!"]
  }
}

Typinferenz

Standardmäßig sind Werte Strings. Aktivieren Sie “numerisch/boolean parsen” und der Konverter wird 42, 3.14, true, false in die entsprechenden JSON-Typen umwandeln. Seien Sie vorsichtig: Ein XML-Attribut id="007" wird mit aktivierter Umwandlung zu 7, was Sie wahrscheinlich nicht möchten.

Wann welchen Stil wählen

  • Kompakt: für menschenlesbares JSON, bei dem Attribute störend sind.
  • Badgerfish: wenn Sie Attribute und Text auf derselben Ebene wie Kinder benötigen.
  • Literal: wenn Sie ohne Verlust zurück zu XML konvertieren müssen.

Häufig gestellte Fragen

Wenn ein Element einmal erscheint, wird standardmäßig ein Objekt verwendet; zweimal oder mehr, ein Array. Verwenden Sie die Option ‘Array erzwingen’, um es konsistent zu machen, wenn Ihr Verbraucher eine Form erwartet.

Namensraum-Präfixe werden in Schlüsseln erhalten (ns:title), es sei denn, Sie aktivieren “Namensräume entfernen”. Die Deklarationen selbst werden zu @xmlns:ns-Attributen im Wurzelelement.

Der literale Modus ist am nächsten zu verlustfrei, aber die Reihenfolge gemischter Inhalte zwischen Elementen und Text ist knifflig. Der kompakte Modus verliert definitiv Attribute. Badgerfish ist ein pragmatischer Mittelweg.

Nein. Die Konvertierung erfolgt in Ihrem Browser.

Verwandte Tools

Tool in anderen Sprachen verfügbar