JSON to XML
JSON in XML-Format konvertieren
JSON-Eingabe
XML-Ausgabe
Was ist die JSON-zu-XML-Konvertierung?
JSON (JavaScript Object Notation) und XML (eXtensible Markup Language) sind die beiden dominanten Datenaustauschformate in der Softwareentwicklung. JSON verwendet Schlüssel-Wert-Paare und Arrays in einer kompakten Syntax, während XML Daten in öffnende und schließende Tags mit optionalen Attributen einbettet. Die Konvertierung von JSON nach XML bedeutet, JSONs strukturelle Grundelemente — Objekte, Arrays, Strings, Zahlen, Booleans und null — in ein wohlgeformtes XML-Dokument mit passender Element-Verschachtelung zu übersetzen.
XML bleibt das erforderliche Format in vielen Unternehmenssystemen, Behörden-APIs, SOAP-Webservices und Branchenstandards wie HL7 (Gesundheitswesen), FpML (Finanzen) und XBRL (Finanzberichterstattung). Wenn deine Anwendung JSON produziert, der nachgelagerte Verbraucher aber XML erwartet, übernimmt ein JSON-zu-XML-Konverter die Übersetzung ohne manuelle Umstrukturierung. Die Konvertierung folgt vorhersehbaren Abbildungsregeln: JSON-Objekte werden zu XML-Elementen, Array-Einträge werden zu wiederholten Geschwisterelementen, und primitive Werte werden zu Textknoten.
Es gibt keinen einheitlichen RFC oder W3C-Standard, der festlegt, wie JSON auf XML abgebildet wird. Verschiedene Bibliotheken erzeugen für dieselbe Eingabe unterschiedliche Ausgaben. Die gebräuchlichste Konvention (die auch dieses Tool verwendet) umschließt das gesamte Dokument in einem konfigurierbaren Root-Element, konvertiert jeden JSON-Schlüssel in ein untergeordnetes XML-Element und repräsentiert Array-Einträge als wiederholte Elemente mit demselben Tag-Namen. Das Verständnis dieser Abbildungsregeln ist wichtig, wenn das Zielsystem ein bestimmtes XML-Schema (XSD) vorschreibt.
Warum einen Online-JSON-zu-XML-Konverter verwenden?
XML aus einer JSON-Quelle manuell zu schreiben ist mühsam und fehleranfällig. Nicht übereinstimmende Tags, vergessene schließende Elemente und falsche Verschachtelung führen zu Dokumenten, die die Schema-Validierung nicht bestehen. Ein Konverter übernimmt die strukturelle Übersetzung automatisch.
JSON-zu-XML-Anwendungsfälle
JSON-zu-XML-Abbildungsregeln
Da kein universeller Standard die JSON-zu-XML-Konvertierung regelt, erzeugen verschiedene Tools unterschiedliche Ausgaben. Die folgende Tabelle zeigt die Abbildungskonventionen dieses Konverters und der meisten verbreiteten Bibliotheken (js2xmlparser, xmlbuilder, fast-xml-parser). Die Wiederholungs-Geschwister-Konvention für Arrays hat sich durchgesetzt, weil sie widerspiegelt, wie XML-Schemas Kollektionen natürlich modellieren — jedes Element ist ein erstklassiges Element statt eines eingebetteten Kinds — und sie lässt sich sauber mit XPath-Abfragen und XSLT-Transformationen kombinieren.
| JSON Type | JSON Example | XML Output |
|---|---|---|
| Object | {"name": "Alice"} | <name>Alice</name> |
| Nested object | {"user": {"age": 30}} | <user><age>30</age></user> |
| Array | {"colors": ["red", "blue"]} | <colors>red</colors><colors>blue</colors> |
| String | "hello" | <root>hello</root> |
| Number | 42 | <root>42</root> |
| Boolean | true | <root>true</root> |
| Null | null | <root/> |
| Empty object | {} | <root/> |
| Empty array | [] | (no child elements) |
Code-Beispiele
Im Folgenden finden sich ausführbare Codeausschnitte zur Konvertierung von JSON nach XML in drei Umgebungen. Jedes Beispiel erzeugt wohlgeformtes XML aus einem JSON-Beispielobjekt.
import { create } from 'xmlbuilder2';
const json = {
order: {
id: 1024,
items: [
{ sku: "A1", qty: 2 },
{ sku: "B3", qty: 1 }
],
shipped: false
}
};
const xml = create({ version: '1.0' })
.ele(json)
.end({ prettyPrint: true });
console.log(xml);
// → <?xml version="1.0"?>
// → <order>
// → <id>1024</id>
// → <items>
// → <sku>A1</sku>
// → <qty>2</qty>
// → </items>
// → <items>
// → <sku>B3</sku>
// → <qty>1</qty>
// → </items>
// → <shipped>false</shipped>
// → </order>import json
import xmltodict
data = {
"order": {
"id": 1024,
"items": [
{"sku": "A1", "qty": 2},
{"sku": "B3", "qty": 1}
],
"shipped": False
}
}
# xmltodict.unparse expects a single root key
xml = xmltodict.unparse(data, pretty=True)
print(xml)
# → <?xml version="1.0" encoding="utf-8"?>
# → <order>
# → <id>1024</id>
# → <items>
# → <sku>A1</sku>
# → <qty>2</qty>
# → </items>
# → <items>
# → <sku>B3</sku>
# → <qty>1</qty>
# → </items>
# → <shipped>false</shipped>
# → </order>package main
import (
"encoding/json"
"encoding/xml"
"fmt"
)
type Item struct {
SKU string `json:"sku" xml:"sku"`
Qty int `json:"qty" xml:"qty"`
}
type Order struct {
XMLName xml.Name `xml:"order"`
ID int `json:"id" xml:"id"`
Items []Item `json:"items" xml:"items"`
Shipped bool `json:"shipped" xml:"shipped"`
}
func main() {
raw := `{"id":1024,"items":[{"sku":"A1","qty":2},{"sku":"B3","qty":1}],"shipped":false}`
var order Order
json.Unmarshal([]byte(raw), &order)
out, _ := xml.MarshalIndent(order, "", " ")
fmt.Println(xml.Header + string(out))
// → <?xml version="1.0" encoding="UTF-8"?>
// → <order>
// → <id>1024</id>
// → <items>
// → <sku>A1</sku>
// → <qty>2</qty>
// → </items>
// → ...
}