Es gibt keine Standardzuordnung zwischen den beiden. XML 1.0 Attribute, Namensräume, geordnete gemischte Inhalte und Kommentare hat; RFC 8259 Sechs Typen und keine Attribute hat Jeder Konverter erfindet seine eigene Bridge, weshalb zwei davon anderer Meinung sind.
Die Integration, die mir beigebracht hat, die XML-zu-JSON-Konvertierung zu respektieren, war die API eines Versandunternehmens. Moderne Reste überall im Stapel, und dann dieser eine Legacy-Endpunkt, der SOAP sprach und XML-Umschläge zurückgab, die ich in eine JSON-Pipeline falten musste. "Es ist nur XML zu JSON", dachte ich und griff nach einem Einzeilenkonverter. Dann kamen die Randfälle an: a <Package> Element, das manchmal ein einzelnes Objekt und manchmal eine Liste war, je nachdem, wie viele Pakete in der Reihenfolge waren. ein id Attribut, das mein naiver Konverter vollständig gelöscht hat, weil er nur Elementtext betrachtete. ein <Description> CDATA eingewickelt, weil es ein Ampersand enthieltJeder von diesen hat die Daten stillschweigend korrumpiert - das JSON kam plausibel heraus und irrte sich auf eine Weise, die nur drei Dienste nachgeschaltet zeigte.
XML und JSON sehen aus, als sollten sie trivial ineinander konvertieren, und sie don' t, weil sie Daten mit unterschiedlichen Grundelementen modellieren JSON hat Objekte, Arrays, Zeichenfolgen, Zahlen, Booleans und Null - eine kleine, saubere Menge XML hat Elemente, Attribute, Textknoten, gemischte Inhalte, Namensräume, CDATA, Kommentare und Verarbeitungsanweisungen, und vor allem hat es Keine Arrays und Keine Typendrohen Ein Konverter muss also Entscheidungen treffen, dass ein verlustfreies Format nicht: Wohin gehen Attribute, wenn JSON kein Konzept hat? Wie kann man ein einzelnes Element aus einer Liste mit einem Element erzählen, wenn XML beide auf die gleiche Weise kennzeichnet? Was passiert mit einem Element, das sowohl Attribute als auch Text enthält?
ein XML-zu-JSON-Konverter Das macht diese Entscheidungen bewusst - und konsistent - ist der Unterschied zwischen einer sauberen Integration und einer Woche des Debuggens im Downstream. Das, das ich für Toolz.dev erstellt habe, ordnet Attribute den vorfixierten Schlüsseln zu, sodass nichts verloren geht, lässt wiederholte Tags in JSON-Arrays zusammenbrechen, sodass die Struktur erhalten bleibt, hält Text mit gemischten Inhalten unter einem dedizierten Schlüssel und liest CDATA wörtlich. Und das alles mit einem abhängigkeitsfreien Parser, der in Ihrem Browser ausgeführt wird, was wichtig ist, da Integrationsnutzlasten genau die Art von Daten sind, die Sie hochladen sollten & #39; t auf einen fremden & #39; s-Server.
Diese Anleitung behandelt die Verarbeitung von XML-strukturellen Macken, wenn wiederholte Elemente zu Arrays werden, wie man mit Attributen und Namespaces umgeht und die SOAP- und RSS-Workflows, bei denen diese Konvertierung ständig stattfindet.
tl; dr: Fügen Sie XML in die Toolz.dev XML zu JSON-Konverter, wähle Einzug aus und hole saubere JSON, wo Attribute werden
@-Präfixierte Schlüssel, wiederholte Tags werden zu Arrays, Text mit gemischtem Inhalt wird darunter#textund CData wird wörtlich gelesen. Optionale Parsing-Drehungen vom Typ"44.95"in eine reale Zahl. Es verwendet einen abhängigkeitsfreien Parser, läuft 100% clientseitig, sodass SOAP- und Integrationsnutzlasten niemals hochgeladen werden und sich mit ihnen koppeln json zu Yaml und das JSON-Formater für den nächsten Schritt in Ihrer Pipeline.
Warum ist XML zu JSON eine einfache Eins-zu-Eins-Mapping?
Die Intuition, dass XML und JSON austauschbar sind, kommt von ihrem gemeinsamen Job - der strukturierte Daten darstellt - und bricht an ihren verschiedenen Bausteinen. Das Missverhältnis zeigt sich an vier bestimmten Stellen, und bei der Qualität eines Konverters' geht es ausschließlich darum, wie es damit umgeht.
Attribute haben kein JSON-Äquivalent. <book id="bk101">War and Peace</book> hat ein Attribut (id) und Textinhalt (War and Peace). JSON hat keine Vorstellung von einem Attribut; alles ist ein Schlüssel-Wert-Paar Ein Konverter muss eine Konvention erfinden, und die weit verbreitete ist es, Attributschlüssel vorzuziehen - { "book": { "@id": "bk101", "#text": "War and Peace" } }drohen Lassen Sie die Attribute wie naive Konverter fallen, und Sie haben stillschweigend Daten verloren.
JSON hat Arrays; XML tut es nicht. In XML wird nur das gleiche Tag wiederholt: drei <item> Elemente unter einem Elternteil. Aber eine einzige <item> Sieht strukturell identisch aus mit einer Liste von eins. JSON muss wissen, ob ein Objekt oder ein Array emittiert werden soll, und das einzige verfügbare Signal ist das Auftreten - so werden wiederholte Tags zu Arrays und einzelne Tags bleiben Objekte.
gemischter Inhalt. Ein Element kann sowohl untergeordnete Elemente als auch losen Text aufnehmen. JSON-Objekte können natürlich "Dieses Objekt hat auch einen nackten Zeichenfolgewert.“ Der Text geht also unter einen reservierten Schlüssel wie #textdrohen
Typen existieren nicht in XML. Jeder Wert in XML ist Text. <price>44.95</price> ist die Zeichenfolge "44.95"„keine Zahl, es sei denn, ein Konverter entscheidet sich dafür, sie zu erzwingen - und diese Wahl kann falsch sein, weil <zip>08544</zip> Muss eine Schnur bleiben oder ihre führende Null verlieren.
der Konverter Behandelt diese explizit, anstatt so zu tun, als ob sie nicht existieren. Deshalb bleibt die Ausgabe der Quelle treu, anstatt die Teile von XML, für die JSON keinen Slot hat, still zu löschen.
Wann werden wiederholte Elemente zu Arrays?
Dies ist der verwirrendste Teil der XML-zu-JSON-Konvertierung, und es lohnt sich, sie zu verstehen, anstatt von überrascht zu werden. Die Regel das Konverter Uses ist auftrittsbasiert: Wenn ein Tag-Name mehr als einmal vorkommt, kollabieren seine Werte in ein JSON-Array, wenn er genau einmal erscheint, bleibt es ein einzelnes Objekt oder Wert.
Also ein <catalog> mit zwei <book> Kinder produzieren { "catalog": { "book": [ {...}, {...} ] } } - ein Array. Aber ein <catalog> mit einem <book> Erzeugt { "catalog": { "book": {...} } } - ein einfaches Objekt, kein Array.
Die Konsequenz zu planen für: Eine Liste eines Elements sieht nicht wie eine Liste aus. Wenn Ihr Downstream-Code erwartet catalog.book Um immer ein Array zu sein und darüber zu iterieren, wird eine Einzelbuchantwort es brechen, weil book Wird ein Objekt sein, das diese bestimmte Zeit Das ist' t ein Fehler in der Konvertierung - it' s eine unvermeidbare Folge von XML nicht Markieren Listen - aber it' s ein echtes gotcha in Integrationen, wo die Anzahl der Artikel variiert Meine Versand-Träger-Katastrophe war genau dies: Ein-Paket-Bestellungen gaben ein Objekt zurück, wo Multi-Paket-Bestellungen ein Array zurückgaben, und mein Code nahm Array an.
Das Verteidigungsmuster in Ihrem Konsumcode besteht darin, sich zu normalisieren: Wenn ein Feld entweder sein könnte, müssen Sie es vor dem Iterieren zu einem Array erzwingen ([].concat(catalog.book)).). Wissen wieso Die Form variiert, was Sie diesen Wachmann schreiben können, anstatt sich von ihm verbrennen zu lassen.
Wie werden Attribute und Namespaces behandelt?
Attribute konvertieren in Objektschlüssel mit einem @ Präfix. <user role="admin" active="true"> wird { "user": { "@role": "admin", "@active": "true" } }. Das Präfix hält Attribute optisch von untergeordneten Elementen abgrenzbar und verhindert eine Kollision, bei der ein Attribut und ein untergeordnetes Element einen Namen teilen Wenn Sie don' überhaupt keine Attribute benötigen - Sie möchten nur die Elementdaten - die Konverter Hat eine Option "Attribute ignorieren", die sie vollständig für ein saubereres Ergebnis ablegt.
Namensräume werden als Teil des Tag-Namens durchlaufen. <soap:Body> wird ein Schlüssel, der buchstäblich benannt "soap:Body", und xmlns:soap="..." ist ein Attribut wie jedes andere, landet unter @xmlns:soapdrohen Dies ist die pragmatische Wahl: Das vollständige Auflösen von Namespaces in ihre URIs würde unhandliche Schlüssel erzeugen und entspricht selten dem, was der Integrationscode tatsächlich möchte, der angesprochen wird soap:Body durch seinen bekannten vorangestellten Namen. Wenn Sie SOAP oder SVG oder einen namensfreien Vokabular verarbeiten, sind die von Ihnen aus dem XML bekannten Präfixe die Schlüssel, die Sie im JSON erhalten.
CDATA-Abschnitte - die <![CDATA[ ... ]]> Blöcke, die XML Rohtext mit Sonderzeichen tragen lassen - werden wörtlich gelesen, ohne Entitätsdekodierung, was genau ihr Zweck ist A <script> oder <description> In CData umhüllt, um seine kaufmännischen und eckigen Klammern zu schützen, werden diese Zeichen intakt. Außerhalb von CData, Standard-Einheiten (<, &und Freunde) und numerische Referenzen (é, é) zu ihren tatsächlichen Charakteren dekodiert werden.
Wie konvertiert man XML mit dem Tool in JSON?
Schritt 1: Fügen Sie Ihre XML ein
Jedes wohlgeformte XML funktioniert - mit oder ohne die <?xml ?> Erklärung mit oder ohne Namensräume. Die Anweisungen zur Deklaration, zum DocType, zu Kommentaren und zur Verarbeitung werden erkannt und übersprungen, sodass Sie ein vollständiges Dokument direkt aus einer API-Antwort oder einer Datei einfügen können. Die Schaltfläche Beispiel laden gibt Ihnen einen Katalog mit Attributen, verschachtelten Elementen und einem wiederholten Tag, sodass Sie jedes Konvertierungsverhalten auf einmal sehen können.
Schritt 2: Wählen Sie Ihre Optionen
Wählen Sie 2- oder 4-Space-Einrückung für den JSON. Entscheiden Sie, ob Attribute eingeschlossen oder gelöscht werden sollen. Und wählen Sie, ob Typen analysiert werden sollen: Lassen Sie es aus und jeder Wert bleibt eine Zeichenfolge (sicher, verlustfrei), schalten Sie es ein und eindeutige Zahlen und Boolesche Zahlen und Boolesche Zahlen und Boolesche Zahlen. Aus ist die richtige Standardeinstellung, wenn Werte wie Postleitzahlen oder IDs möglicherweise führende Nullen haben, die Sie beibehalten müssen.
Schritt 3: Konvertieren und überprüfen
Der Konverter analysiert zuerst und meldet fehlerhaftes Markup - ein nicht übereinstimmendes Schließ-Tag, ein nicht geschlossenes Element, einen nicht beendeten CDATA-Block - mit einer bestimmten Nachricht, anstatt Müll-JSON zu erzeugen. Beim Erfolg erscheint das JSON mit Zeilen- und Bytezählungen. Überspringen Sie es, um zu bestätigen, dass die Entscheidungen zwischen Array und Objekt Ihren Erwartungen entsprechen.
Schritt 4: Kopieren oder herunterladen
Kopieren Sie die JSON in Ihre Zwischenablage, um sie in Code einzufügen, oder laden Sie sie als .json Akte Von hier aus wird es in einen Anfragetext, einen Datenspeicher oder die nächste Phase Ihrer Pipeline abgelegt. Wenn der nächste Schritt ein Konfigurationsformat ist, JSON-zu-YAML-Konverter nimmt es weiter.
Welche Workflows gibt es bei dieser Konvertierung?
Integration von Alt-Seifen-APIs
SOAP ist immer noch überall in den Bereichen Unternehmens-, Bank-, Logistik- und Regierungssysteme und spricht ausschließlich XML. Wenn ein moderner JavaScript- oder Knotendienst eine SOAP-Antwort verbrauchen muss, ist die Konvertierung des XML-Hüllumschlags in JSON Schritt eins. Die Konvertierung des Namespace-erhaltenden bedeutet soap:Body und soap:Envelope Behalten Sie ihre bekannten Namen und die Attributhandhabung behält die Metadaten, die Seife gerne an Elementen aufhängt. Dies ist die gleiche Kategorie von Kleberarbeiten, die in der API-Debugging-Anleitungdrohen
Lesen von RSS- und Atom-Feeds
RSS- und Atom-Feeds sind XML, und wenn sie in eine JavaScript-App gezogen werden, müssen sie konvertiert werden. ein Feed <item> Elemente sind der Fall mit wiederholten Tags im Lehrbuch - sie werden zu einer JSON-Anordnung von Elementen, genau das, was Sie wollen .map() runter, um eine Liste zu rendern. Attribute wie ein Gehege url und type werden unter ihren vorgegebenen Schlüsseln aufbewahrt, sodass Podcast- und Medienfeeds ihre Audio-Links intakt halten.
Migrieren von Konfigurations- und Datendateien
Ältere Anwendungen speichern Konfiguration und Daten in XML - think .config Dateien, Sitemaps, exportierte Datasets, Office-Open-XML-Fragmente. Das Konvertieren in JSON ist der erste Schritt bei der Modernisierung eines Systems oder beim Import von Legacy-Daten in einen JSON-nativen Speicher. Die Option Typ-Parsing ist hier nützlich, wenn Sie kennen Die numerischen Felder sind wirklich numerisch und möchten, dass sie im Ziel eingegeben werden.
Testen und Prototyping
Wenn Sie' einen Datenfluss verkabeln und nur die Form einer XML-Nutzlast als JSON sehen müssen - um eine TypeScript-Schnittstelle zu entwerfen, eine Antwort zu verspotten, einen Feldpfad zu überprüfen - schlägt eine schnelle Konvertierung im Browser das Schreiben von Wegwerfparsercode umwandeln, die Struktur lesen, Ihre Typen dagegen schreiben.
XML vs. JSON: Wann passt jedes Format?
| XML | json | |
|---|---|---|
| Primärer Ära & Ökosystem | Unternehmen, SOAP, Dokumente | Web-APIs, Javascript, Konfigurieren |
| Attribute | erstklassig | Keine - auf vorgefertigte Tasten abgebildet |
| Arrays | Keine - wiederholte Tags implizieren Listen | erstklassig |
| Typen | Alle Texte | Zeichenfolgen, Zahlen, Boolesche, null |
| Kommentar | unterstützt | Nicht in der Spezifikation |
| Namensräume | erstklassig | Keine - wird als vorangestellte Schlüsselnamen beibehalten |
| Wortaufwand | Höher - schließende Tags, Attribute | Unter - Zahnspangen und Halterungen |
| Natürlicher Lebensraum | SOAP, RSS/Atom, Office-Formate, Konfigurieren | REST-APIs, Front-End-Daten, package.json |
Das Muster hinter der Tabelle: XML wurde für Dokumente und den Unternehmensaustausch erstellt, bei denen Struktur, Validierung und Selbstbeschreibung wichtig sind; JSON wurde für das Web erstellt, bei dem Leichtigkeit und eine direkte Zuordnung zu JavaScript-Objekten wichtig sind. Die Konvertierungsrichtung ist überwiegend XML-zu-JSON, da die Bewegung in der Branche von älteren XML-basierten Systemen zu JSON-nativen Frontends und Diensten erfolgt - Sie und #39; treffen dort, wo sie leben, auf Legacy-Daten und bringen sie in eine moderne Pipeline. Der breitere Satz an Format-Tools für diese Pipeline ist in der Pipeline Anleitung für die Coding-Toolsdrohen
Ist es sicher, XML mit vertraulichen Daten zu konvertieren?
Integrations-Nutzlasten sind dicht mit Dingen, die Sie nicht auslaufen möchten: SOAP-Antworten mit Kundendatensätzen, Konfigurationsdateien mit internen Endpunkten und Anmeldeinformationen, Datenexporte mit persönlichen Informationen. Und genau das werden in Online-Konverter eingefügt, normalerweise in der Mitte der Integration, normalerweise in Eile.
der Toolz.dev-Konverter Parsen und konvertieren Sie vollständig in Ihrem Browser mit einem abhängigkeitsfreien Parser - nein DOMParser, kein Serveraufruf, keine Daten verlassen die Seite. Trennen Sie Ihr Netzwerk nach dem Laden der Seite und es funktioniert immer noch. Dies ist eine architektonische Tatsache darüber, wie das Werkzeug aufgebaut ist, kein Versprechen in einem Richtliniendokument, und es ist das Browser-First-Prinzip hinter der gesamten Toolbox, das in der Datenschutz-Leitfadendrohen
Es gilt die Standardvorbeherrschung: Client-seitige Konvertierung schützt den Konvertierungsschritt Was Sie danach mit dem JSON machen - wo Sie es einfügen, an was Sie es senden - ist eine separate Entscheidung Aber die Transformation selbst hält Ihr XML auf Ihrer Maschine.
FAQ
Wie konvertiere ich XML online in JSON?
Fügen Sie Ihr XML in den XML to JSON Converter ein und klicken Sie auf Konvertieren Das Tool analysiert das XML, konvertiert es in JSON mit der von Ihnen gewählten Einrückung und den Optionen und lässt Sie das Ergebnis kopieren oder herunterladen Verarbeitung ist 100% im Browser - es wird nichts hochgeladen.
Wie werden XML-Attribute in der JSON-Ausgabe dargestellt?
Attribute werden zu Objektschlüsseln mit dem Präfix @, so dass ein Buchelement mit id="BK101" in einen "@id"-Schlüssel umwandelt. Dadurch werden Attribute von untergeordneten Elementen verschieden. Sie können die Attributausgabe vollständig mit der Option Ignorieren-Attribute deaktivieren, wenn Sie nur die Elementdaten benötigen.
Warum werden einige XML-Elemente zu Arrays und andere bleiben Objekte?
JSON hat keine Möglichkeit, zu markieren, dass ein Element wiederholt wird. Daher verwendet der Konverter das Auftreten: Wenn ein Tag mehr als einmal unter demselben übergeordneten Element erscheint, wird es zu einem Array und wenn es einmal erscheint, bleibt es ein einzelnes Objekt. Dies spiegelt die Quelle treu wider, bedeutet jedoch, dass eine Liste mit einem Element eher wie ein einzelnes Objekt als wie ein Array aussieht.
Behandelt der Konverter CData-Sektionen und XML-Entitäten?
Ja. CData-Blöcke werden wörtlich ohne Entitätsdekodierung gelesen, was ihr Zweck ist. Außerhalb von CData werden die Standard-Entitäten wie <, & amp; &, & amp; und & apos; und numerische Zeichenreferenzen wie é und &é in ihre tatsächlichen Zeichen dekodiert.
Kann ich eine SOAP-Antwort oder einen RSS-Feed in JSON konvertieren?
Ja. SOAP-Umschläge und RSS - oder Atom-Feeds sind gewöhnliches XML, also konvertieren sie wie jedes andere Dokument, Namespaced-Tags behalten ihr Präfix im Schlüsselnamen - soap: Body wird zu einem " soap:Body" key - und wiederholte Elemente wie RSS-Elemente werden zu einem JSON-Array, das Sie abbilden können.
Bleiben Zahlen und Boolesche nach der Konvertierung als Text?
Standardmäßig ja, da XML kein Typsystem hat und Werte wie "007" oder "1.10" als Text aussagekräftig sein können. Aktivieren Sie die Option Typ-Parsing, um eindeutigen numerischen und booleschen Text in echte JSON-Nummern und Boolesche Konvertierung zu konvertieren, wenn Sie dies möchten.
Ist es sicher, XML mit vertraulichen Daten zu konvertieren?
Ja. Der Parser läuft komplett in JavaScript in Ihrem Browser - keine Netzwerkanfrage trägt Ihre Daten, nichts wird protokolliert oder gespeichert, und das Tool funktioniert offline XML mit Kundendatensätzen, internen Identifikatoren oder Integrationsgeheimnissen verlässt Ihren Computer nie.
Was ist der Unterschied zwischen XML und JSON?
XML ist eine Auszeichnungssprache mit dem Öffnen und Schließen von Tags, Attributen, Namespaces und Kommentaren, die für den Austausch von Dokumenten und Unternehmensdaten konzipiert sind. JSON ist ein leichteres Format, das aus Objekten, Arrays und primitiven Werten erstellt wurde und die Standardeinstellung für moderne Web-APIs ist. Die Konvertierung von XML in JSON ist häufig bei der Integration älterer SOAP- oder Feed-basierter Systeme mit JavaScript-Frontends.
XML und JSON sehen austauschbar aus und aren' t, weil JSON keine Attribute, keine Arrays für jede Wiederholung und keinen Text neben Kindern hat - genau die Orte, an denen eine naive Konvertierung stillschweigend Daten verliert Ein Konverter, der diese Fälle absichtlich bearbeitet, gibt Ihnen JSON that's quelltreu: Füge dein XML ein, Überprüfen Sie, wie die Attribute und wiederholten Tags zugeordnet wurden, und bringen Sie saubere Daten anstelle einer plausiblen Korruption in Ihre Pipeline.



