XML-zu-JSON-Konverter
XML in JSON oder JSON in XML umwandeln, mit @-Attributen, #text, vom ganzen Dokument bestimmten Arrays und Zeile und Spalte, wo das XML nicht wohlgeformt ist.
Die Ausgabe erscheint hier
Was dieses Werkzeug tut
XML kommt meist aus Systemen, die niemand ausgesucht hat: eine SOAP-Antwort, ein RSS-Feed, eine Konfigurationsdatei, ein Export aus etwas, das älter ist als JSON. Der Code, der es verwenden muss, will JSON. Der umgekehrte Fall ist genauso häufig: eine JSON-Nutzlast, die für ein System bestimmt ist, das nur XML annimmt. Diese Seite wandelt in beide Richtungen um, in Ihrem Browser, und liest beide Formate nach einem festen Satz von Regeln, sodass sich die beiden Richtungen darüber einig sind, was jeder Schlüssel bedeutet.
Was sie auszeichnet, ist, dass die Form des JSON aus dem ganzen Dokument bestimmt wird statt aus dem Element, das gerade gelesen wird, und dass die Seite das sagt. Wo immer diese Entscheidung einem Element eine andere Form gibt als die, die es für sich allein gehabt hätte, nennt ein Hinweis unter der Ausgabe den Pfad sowie Zeile und Spalte, an denen sie zuerst gegriffen hat. Wofür JSON keinen Platz hat, etwa Kommentare oder die Reihenfolge gemischten Inhalts, wird auf dieselbe Weise gemeldet, statt zu verschwinden, und in der anderen Richtung wird jede Änderung, die XML Ihrem JSON aufzwingt, an der Stelle benannt, an der sie geschah.
Die Regeln: @ für ein Attribut, #text für Text
Es gibt einen einzigen Satz von Regeln, und keine Einstellung ändert ihn. Ein Attribut wird zu einem Schlüssel, der als @ gefolgt vom Namen des Attributs geschrieben wird, und Text, der sein Element mit irgendetwas anderem teilen muss, steht unter dem Schlüssel #text. Weder @ noch # darf einen XML-Namen beginnen, also kann kein so geschriebener Schlüssel mit einem Kindelement verwechselt werden, und das ist es, was es erlaubt, dasselbe JSON ohne Raten in XML zurückzulesen. An einem kleinen Katalog gezeigt:
- Das Wurzelelement ist der eine Schlüssel auf oberster Ebene: Ein Dokument, dessen Wurzelelement catalog ist, wird zu einem Objekt mit dem einzigen Schlüssel "catalog".
- Ein Element, das nichts als Text enthält, ist dieser Text: <title>Midnight Rain</title> wird zu "title": "Midnight Rain".
- Ein Attribut ist ein Schlüssel neben den Kindelementen: <book id="bk101"> gibt dem Buch "@id": "bk101", und jedes Kindelement folgt als Schlüssel, in der Reihenfolge seines ersten Auftretens.
- Ein Element mit Attributen und Text behält den Text unter #text: <price currency="USD">44.95</price> wird zu "price": {"@currency": "USD", "#text": 44.95}.
- Ein Element, das sich unter einem Elternelement wiederholt, wird zu einem Array: Ein Buch, dessen Element author zweimal vorkommt, hat "author": ["Gambardella, Matthew", "Knorr, Stefan"].
- Namen bleiben genau so erhalten, wie sie geschrieben sind, samt Präfix: <dc:title> wird zum Schlüssel "dc:title", eine Namensraumdeklaration wird zu einem Attributschlüssel wie "@xmlns:dc", und nichts wird zu einer Namensraum-URI aufgelöst.
Entitäten und Zeichenreferenzen werden dekodiert, sodass & als & ankommt und é als é, und ein CDATA-Abschnitt ist einfach Text. Leerraum, der allein zwischen Elementen steht, ist Formatierung und wird verworfen; jede andere Textfolge bleibt vollständig erhalten und wird nie gekürzt. Die zwei Normalisierungen, die jeder standardkonforme XML-Parser vornimmt, kommen trotzdem zuerst: Ein in Text getippter Wagenrücklauf kommt als Zeilenvorschub an, und ein in einen Attributwert getippter Tabulator oder Zeilenumbruch kommt als Leerzeichen an. Mit einer Zeichenreferenz behält ein Dokument das eine wie das andere.
Warum das ganze Dokument die Form bestimmt
Ein Konverter, der Element für Element entscheidet, schreibt die Autoren des ersten Buchs als Array, weil es zwei sind, und den Autor des zweiten als Zeichenkette, weil es einer ist. Ein Element, das ein Attribut trägt, ist in einem Datensatz ein Objekt und im nächsten schlichter Text. Code, der gegen den ersten Datensatz geschrieben ist, scheitert am zweiten, und nichts hat unterwegs gesagt, dass sich die Form ändern könnte.
Deshalb wird die Form pro Pfad entschieden, nach den Elementnamen von der Wurzel hinunter bis zu einem Element, geschrieben als /catalog/book/author, ohne Positionen darin, sodass jeder Autor jedes Buchs auf einem Pfad steht. Alle Elemente auf einem Pfad werden zugleich abgewogen:
- Arrays. Wiederholt sich das Element unter irgendeinem Elternelement, wird jedes Element auf dem Pfad als Array geschrieben, auch ein einzelnes.
- Objekte. Trägt irgendein Element auf dem Pfad ein Attribut oder ein Kindelement, wird jedes Element darauf als Objekt geschrieben, auch eines, das nur Text enthält, und behält seinen Text unter #text.
- Werte. Ein Pfad wird nur dort als Zahlen gelesen, wo sich jeder Wert darauf umwandeln lässt, und nur dort als Wahrheitswerte, wo jeder Wert true oder false ist, nach der Regel, die unten bei Zahlen und Wahrheitswerten beschrieben ist.
- Leere Elemente. Ein leeres Element nimmt an diesen Entscheidungen nicht teil und bekommt die Art, auf die sich sein Pfad festlegt.
Wo immer das Ergebnis von dem abweicht, was ein Element für sich allein gewesen wäre, sagt die Seite das einmal für den Pfad, mit Zeile und Spalte des ersten Elements, das dadurch verändert wurde. In einem Katalog, in dem ein Buch mehrere Autoren hat und ein anderes nur einen, ist dieser eine Autor trotzdem ein Array; wo ein Preis ein Attribut currency trägt und ein anderer nicht, ist der schlichte Preis trotzdem ein Objekt, mit seinem Text unter #text. Beides wird gemeldet, sodass keines davon den Code überrascht, der sie liest.
Ein Beispiel mit einem einzigen Datensatz und das Feld „Immer Arrays“
Die Form kann nur so gut sein wie das Dokument, aus dem sie bestimmt wird. Fügen Sie einen Katalog mit einem einzigen Buch ein, und dieses Buch ist ein Objekt, sein einziger Autor eine Zeichenkette und sein Preis eine Zahl, während derselbe Katalog mit einem zweiten Buch daneben die Bücher zu einem Array macht. Ein Pfad, der in allem, was Sie eingefügt haben, überall einmal vorkommt, bleibt ein einzelner Wert, und ein Pfad, dessen Werte sich zufällig alle umwandeln lassen, bleibt bei Zahlen, bis ein Dokument mit einer Postleitzahl eintrifft, die mit einer Null beginnt. Das JSON ist genau so verlässlich, wie das Beispiel repräsentativ ist, fügen Sie also mehr als einen Datensatz ein, wann immer Sie können.
Für Arrays gibt es ein Mittel, das nicht vom Beispiel abhängt. Tragen Sie in „Immer Arrays“ die Elementnamen oder Pfade ein, die Arrays sein müssen, was auch immer das Dokument zeigt, getrennt durch Kommas oder Leerzeichen, und jeder Pfad, den eine Angabe trifft, wird überall als Array geschrieben, auch dort, wo er nur einmal vorkommt:
- Ein bloßer Name wie item trifft jeden Pfad, der auf ein Element namens item endet, wo auch immer es steht.
- Ein Pfad wie /rss/channel/item trifft diesen einen Pfad und wird so geschrieben, wie die Pfade unter der Ausgabe geschrieben sind, sodass sich einer von dort kopieren lässt.
- Der Abgleich ist exakt: Groß- und Kleinschreibung zählt, und ein Präfix gehört zum Namen, also trifft Item kein item und link kein atom:link.
- Jeder Pfad, den das Feld zu einem Array gemacht hat, wird wie jede andere Entscheidung gemeldet. Eine Angabe, die weder ein Name noch ein Pfad ist, und eine, die kein Element im Dokument getroffen hat, werden unter dem Feld aufgeführt, und die Angaben, die greifen, gelten weiter.
Das Feld gehört zur Richtung „XML zu JSON“. Es behält, was Sie eingegeben haben, wenn Sie die Richtung wechseln und wieder zurück, und wie jede Einstellung auf der Seite wird es nicht zwischen Besuchen behalten. Für Werte gibt es kein solches Feld: Ein Pfad, der Text bleiben muss, was auch immer das Beispiel enthält, ist das, wofür Sie „Zahlen und Wahrheitswerte umwandeln“ ausschalten, um den Preis, dass jeder andere Wert ebenfalls zu Text wird.
Zahlen, Wahrheitswerte und warum 02134 Text bleibt
In XML ist alles Text, und numerisch aussehenden Text in JSON-Zahlen zu verwandeln, ist meist das, was Sie wollen. Es ist auch der Weg, auf dem eine Postleitzahl 02134 zu 2134 wird und eine lange Bestellnummer ihre letzten Ziffern verliert. Die Regel hier ist dieselbe, die der CSV-Konverter dieser Website verwendet, und sie braucht keine Liste von Sonderfällen: Text wird nur dort zur Zahl, wo diese Zahl, wieder ausgeschrieben, den Text exakt wiedergibt. 42 tut das, also wird es umgewandelt. 02134 nicht, und ebenso wenig 1.50, +5, 1e5 oder eine Ganzzahl, die zu lang ist, als dass ein Double jede ihrer Ziffern halten könnte. Die Wahrheitswerte sind genau true und false, in Kleinbuchstaben.
Was diese Seite hinzufügt, ist, dass die Regel auf einen ganzen Pfad auf einmal angewendet wird. Ein Pfad wird nur dann als Zahlen gelesen, wenn sich jeder Wert darauf umwandeln lässt, und nur dann als Wahrheitswerte, wenn jeder Wert einer ist; ein einziger Wert, der eine Ziffer verlieren würde, oder Zahlen und Wahrheitswerte, die sich auf einem Pfad treffen, lassen jeden Wert dort Text bleiben. Jeder Attributname auf einem Pfad wird für sich entschieden. Ein Pfad, der Text bleibt, obwohl sich einige seiner Werte umwandeln ließen, wird mit Nennung des Pfads gemeldet, und bei einem Attribut endet der Pfad auf dem Attribut, wie in /catalog/book/@id.
„Zahlen und Wahrheitswerte umwandeln“ ist eingeschaltet, wenn die Seite geöffnet wird, so wie der entsprechende Schalter auf der CSV-Seite, und wird es ausgeschaltet, wird jeder Wert als Text geschrieben. Der Wert einer Namensraumdeklaration wird so oder so nie als Zahl gelesen, weil der Standard Namespaces in XML diesen Wert als Namensraumnamen definiert, also als Text.
Leere Elemente und das null, das ein Dokument selbst angibt
- Ein leeres Element bekommt die Art, auf die sich sein Pfad festlegt. Auf einem Pfad aus Text ist es die leere Zeichenkette. Auf einem Pfad aus Zahlen oder Wahrheitswerten ist es null, und die Seite sagt das, da das Element für sich allein leerer Text gewesen wäre.
- Leer heißt überhaupt nichts: <zip> </zip> enthält ein Leerzeichen, und ein Leerzeichen ist Text.
- Ein Pfad, auf dem jedes Element leer ist, ist Text, also ist jedes davon die leere Zeichenkette. Nichts dort wird als Zahl gelesen, und ein null wäre eine Information, die das Dokument nie gegeben hat.
- Auf einem Pfad, der als Objekte geschrieben wird, trägt auch ein leeres Element #text, leer oder null nach derselben Regel, wo immer ein anderes Element auf dem Pfad Text enthält: Neben <price currency="USD">5</price> wird ein <price/> zu {"#text": null}. Wo kein Element auf dem Pfad Text enthält, wie bei Bildelementen, die nur ein Attribut src tragen, trägt keines von ihnen #text.
Ein Dokument kann null auch selbst angeben. Ein Element, das mit xsi:nil="true" markiert ist, wobei dieses Präfix an den Namensraum XML Schema instance gebunden ist, ist auf jedem Pfad null, wie auch immer „Zahlen und Wahrheitswerte umwandeln“ eingestellt ist. Die Markierung ist die Art, wie das Dokument null statt Daten sagt, deshalb erscheinen im JSON weder das Attribut noch eine Namensraumdeklaration, die nichts anderes bindet. Jedes Präfix, das an diesen Namensraum gebunden ist, funktioniert, und i:nil="1" sagt dasselbe; xsi:nil="false" sind gewöhnliche Daten, und ein als nil markiertes Element, das trotzdem Inhalt hat, bleibt, wie es ist, denn es als null zu lesen, würde diesen Inhalt stillschweigend verwerfen.
Wofür JSON keinen Platz hat, gemeldet statt verloren
Manches, was ein XML-Dokument enthält, hat in JSON keinen Platz. Was Bedeutung trägt, wird unter der Ausgabe gemeldet, statt stillschweigend verworfen zu werden:
- Die Reihenfolge gemischten Inhalts. In <p>Hello <b>world</b>, again</p> wird der Text unter #text als "Hello , again" gesammelt und das Element b unter "b": Jedes Zeichen und jedes Element bleibt erhalten, nicht aber die Reihenfolge, in der sie standen. Kindelemente, deren Namen sich abwechseln, verlieren ihre Reihenfolge auf dieselbe Weise. Das wird einmal für den Pfad des Elements gemeldet, dessen Inhalt es ist, und nur dort, wo die Reihenfolge wirklich verloren ging, sodass <p><b>Note:</b> the rest</p> nichts auslöst, weil die Reihenfolge seiner Schlüssel sie bewahrt.
- Kommentare und Verarbeitungsanweisungen. Sie werden weggelassen, mit einem Hinweis je Art, der sagt, wie viele es waren und wo das erste Vorkommen steht.
- Die DOCTYPE-Deklaration. Auch sie wird weggelassen, und ihr Hinweis sagt, dass die DTD nicht angewendet wurde: Ein Standardwert, den die DTD für ein Attribut deklariert, fehlt im JSON, weil dieses Werkzeug die DTD nicht liest.
- Die XML-Deklaration am Anfang. Sie wird ohne Hinweis weggelassen, weil sie beschreibt, wie der Text kodiert ist, und nicht, was die Daten sind.
JSON zurück zu XML: das nächstliegende XML, und jede Änderung benannt
Wechseln Sie die Richtung, und dieselben Regeln laufen andersherum: Ein @-Schlüssel wird zu einem Attribut, #text zum Text seines Elements, ein Array zu einem Element für jeden Eintrag und jeder andere Schlüssel zu einem Kindelement, die Kindelemente in der Reihenfolge, in der ihre Schlüssel stehen. Ein null wird als leeres Element geschrieben, das mit xsi:nil="true" markiert ist, wobei der Namensraum XML Schema instance einmal am Wurzelelement deklariert wird, und nur dann, wenn ein null geschrieben wird, sodass das Zurückwandeln wieder null ergibt statt einer leeren Zeichenkette. Abgesehen von JSON, das sich nicht parsen lässt oder zu tief verschachtelt ist, um umgewandelt zu werden, wird nichts abgelehnt. Wo Ihr JSON eine Form hat, die XML so, wie sie ist, nicht tragen kann, wird das nächstliegende wohlgeformte XML geschrieben und die Änderung unter der Ausgabe mit einem JSONPath benannt, den Sie in den JSONPath-Tester dieser Website einfügen können:
- Alles andere als ein einzelnes Wurzelelement, ob mehrere Schlüssel auf oberster Ebene, gar keiner, ein Array auf oberster Ebene oder ein bloßer Wert, wird in <root> geschrieben.
- Ein Schlüssel, der kein XML-Name ist, wird unter dem nächstliegenden Namen geschrieben, unter dem kein anderer Schlüssel daneben geschrieben wird: first name als first_name und 1st als _1st.
- Ein Eintrag eines Arrays, das kein Schlüssel benennt, ob es in einem anderen Array steht oder auf oberster Ebene, wird als Element <item> geschrieben.
- Ein @-Schlüssel oder ein #text, der ein Objekt oder ein Array enthält, wird als Kindelement geschrieben, da weder ein Attribut noch ein Text so etwas enthalten kann.
- Ein @-Schlüssel, der null enthält, wird weggelassen, und ebenso ein #text, der neben Kindelementen null enthält, da XML null nur von einem ganzen Element sagt.
- Ein Zeichen, das XML 1.0 überhaupt nicht enthalten kann, nicht einmal als Referenz, wird ersetzt, und die Seite sagt, wo.
Maskieren gehört zum Schreiben wohlgeformten XML dazu und ist keine Option. Ein < und ein & werden immer maskiert. In einem Attributwert gilt das auch für ein doppeltes Anführungszeichen, weil der Wert zwischen zwei davon geschrieben wird; ein Tabulator, ein Zeilenvorschub oder ein Wagenrücklauf wird dort als Zeichenreferenz geschrieben, weil ein Parser ihn sonst in ein Leerzeichen verwandeln würde. In Text wird ein Wagenrücklauf als Referenz geschrieben, weil ein Parser ihn sonst in einen Zeilenvorschub verwandeln würde, und ]]> wird nie unverändert geschrieben. Das ist es, was den Wert als den Wert zurücklesen lässt, den Sie geschrieben haben.
Was das Zurückwandeln ergibt, gesagt, bevor Sie umwandeln
Manches XML ist wohlgeformt und ergibt beim Zurücklesen trotzdem etwas anderes als das JSON, aus dem es geschrieben wurde; deshalb liest die Seite das XML, das sie gerade geschrieben hat, nach denselben Regeln, die die andere Richtung verwendet, und sagt, wo die Antwort abweicht. Ein Array mit einem Eintrag ergibt beim Zurücklesen seinen einzigen Eintrag, es sei denn, dieselben Elemente wiederholen sich anderswo im Dokument unter einem Elternelement. Ein leeres Array schreibt kein Element und ein leeres #text keinen Text, also ergibt beides beim Zurücklesen nichts. Ein Objekt, das nichts enthält, was als Attribut oder Kindelement geschrieben wird, ergibt beim Zurücklesen einen einfachen Wert, und wo dieselben Elemente anderswo das Dokument ein Array oder ein Objekt entscheiden lassen, das Ihr JSON nicht hatte, wird auch das gesagt. Jeder dieser Fälle wird so geschrieben, wie Ihr JSON ihn enthält, und gemeldet.
„Als Eingabe verwenden“ verschiebt die Ausgabe in das Eingabefeld und wechselt die Richtung, sodass das, was zurückkommt, und was es meldet, einen Klick entfernt ist. Wo nichts gemeldet wird, kommt Ihr JSON zurück, bis auf das, was XML nicht festhält. XML-Text hält nicht fest, ob ein Wert eine Zahl, ein Wahrheitswert oder eine Zeichenkette war: Ist „Zahlen und Wahrheitswerte umwandeln“ eingeschaltet, kann eine Zeichenkette, die eine Zahl exakt wiedergibt, als diese Zahl zurückkommen, und ist es ausgeschaltet, kommt jeder Wert als Text zurück. Und ein Attribut oder ein #text, das leer ist oder null enthält, kann an einer anderen Stelle unter den Schlüsseln neben ihm zurückkommen, weil XML diese Position nicht festhält.
Ein Hin und Zurück, das beim XML beginnt, verspricht mit Absicht weniger. Der Text, den Sie eingefügt haben, kommt nicht zurück: Die Deklaration, die Formatierung, die Kommentare und alles andere, was auf dem Hinweg gemeldet wurde, sind weg. Beständig bleibt das XML, das die Seite schreibt: Wandeln Sie es in JSON um und wieder zurück, mit denselben Einstellungen, und dasselbe XML kommt zurück.
Wenn sich das XML oder das JSON nicht lesen lässt
Ein Dokument, das der XML-Parser nicht lesen kann, wird mit einem Satz abgelehnt, der sagt, was falsch ist, und mit Zeile und Spalte, wo immer es eine Stelle anzugeben gibt: Ein Element, das nie geschlossen wird, ein Attributwert ohne Anführungszeichen und ein &, das keine Referenz beginnt, haben jeweils einen eigenen Satz. Ein schließendes Tag, das nicht zum noch offenen Element passt, sagt das und zeigt dann das schließende Tag, das dieses Element braucht und das das offen gebliebene Element nennt. JSON, das sich nicht parsen lässt, wird genauso abgelehnt, mit der Zeile und Spalte, an der sein Parser angehalten hat, wo immer sich das messen lässt.
Unter einem Satz, der eine Stelle angibt, zeigt die Seite Ihre eigene Zeile, in der das fehlerhafte Zeichen markiert ist, was bei minimiertem XML oder JSON am meisten zählt, wo das ganze Dokument eine einzige Zeile ist. Eine lange Zeile wird auf den Abschnitt um die Markierung gekürzt, mit Auslassungspunkten dort, wo gekürzt wurde. Ein fehlerhaftes Zeichen, das nichts zeichnet, etwa das Ende des Textes, ein Tabulator oder eine Bytereihenfolge-Markierung, wird an einem sichtbaren Platzhalter markiert. Die Spalte zählt so, wie JavaScript eine Zeichenkette zählt, in UTF-16-Codeeinheiten, sodass ein Emoji oder ein seltenes Ideogramm vor der Markierung sie um zwei statt um eins weiterrückt.
Ein Dokument, das tiefer verschachtelt ist, als die Website erlaubt, wird ebenfalls abgelehnt, in beiden Richtungen, und sein Satz nennt die Grenze.
Häufig gestellte Fragen
- Warum wird ein einzelnes Element als Array geschrieben?
- Weil sich ein Element auf demselben Pfad anderswo im Dokument unter einem Elternelement wiederholt und der Pfad einmal für das ganze Dokument entschieden wird. Code, der den Wert als Array liest, funktioniert dann für jeden Datensatz, auch für die mit einem einzelnen Element. Die Seite nennt den Pfad, mit Zeile und Spalte des ersten Elements, das dadurch verändert wurde. Um ein Array zu bekommen, wo Ihr Beispiel nur eines enthält, tragen Sie das Element in „Immer Arrays“ ein.
- Warum steht in meinem JSON eine Zahl in Anführungszeichen?
- Weil irgendein Wert auf demselben Pfad als Zahl nicht überleben würde, sei es durch eine führende Null, eine abschließende Null nach dem Dezimalpunkt, ein Pluszeichen oder einen Exponenten, oder weil sich auf diesem Pfad Zahlen und Wahrheitswerte treffen. Ein solcher Pfad ist überall Text, und die Seite nennt ihn. Seine Werte werden umgewandelt, sobald jeder von ihnen so geschrieben ist, wie die Zahl wieder ausgeschrieben wird: 2134 statt 02134.
- Was passiert mit Kommentaren, Verarbeitungsanweisungen und der DOCTYPE-Deklaration?
- Sie werden im JSON weggelassen, und jede Art wird gemeldet, mit ihrer Anzahl und der Stelle, an der das erste Vorkommen steht. Der Hinweis zur DOCTYPE-Deklaration sagt außerdem, dass die DTD nicht angewendet wurde, sodass jeder Standardwert für ein Attribut, den sie deklariert, fehlt.
- Prüft es mein XML gegen eine DTD oder eine XSD?
- Nein. Es liest wohlgeformtes XML und sagt, wo es ein Dokument nicht lesen konnte, validiert aber nicht gegen eine DTD oder eine XSD und wendet nichts an, was eine DTD deklariert. Deshalb wird eine DOCTYPE-Deklaration als nicht angewendet gemeldet, statt stillschweigend ignoriert zu werden.
- Wie wird null in XML geschrieben, und kommt es zurück?
- Als leeres Element, das mit xsi:nil="true" markiert ist, wobei der Namensraum XML Schema instance einmal am Wurzelelement deklariert wird. Wandeln Sie dieses XML zurück, ergibt es wieder null, während ein schlichtes leeres Element auf jedem Pfad, der als Text gelesen wird, als leere Zeichenkette zurückgekommen wäre. Verwendet Ihr JSON das Präfix xsi bereits für einen eigenen Namen, deklariert die Seite stattdessen ein freies Präfix.
- Was passiert mit einem Schlüssel, der ein Leerzeichen enthält?
- Er wird unter dem nächstliegenden Namen geschrieben, den XML erlaubt, also wird first name zu first_name, und die Seite nennt den Schlüssel mit seinem JSONPath zusammen mit dem Namen, zu dem er wurde. Fügen Sie diesen JSONPath in den JSONPath-Tester dieser Website ein, um jeden Wert auszuwählen, auf den die Änderung angewendet wurde.
- Warum bekomme ich beim Zurückwandeln nicht mein ursprüngliches XML?
- Weil JSON für einen Teil dessen, was eine XML-Datei enthält, keinen Platz hat: die Deklaration, die Formatierung zwischen den Elementen, Kommentare, Verarbeitungsanweisungen, die DOCTYPE-Deklaration und die Reihenfolge gemischten Inhalts. Was Bedeutung trug, wurde auf dem Hinweg gemeldet. Beständig bleibt das XML, das die Seite schreibt: Bringen Sie es in JSON und wieder zurück, mit denselben Einstellungen, und dasselbe XML kommt zurück.
- Wird etwas von dem, was ich einfüge, an einen Server gesendet?
- Nein. Beide Richtungen laufen vollständig in Ihrem Browser, sodass das Dokument, das Sie einfügen, ob eine API-Antwort, ein Feed oder eine Konfigurationsdatei mit Zugangsdaten darin, nie Ihr Gerät verlässt.
Verwandte Werkzeuge
- JSON-Formatierer
Validiert und verschönert JSON, mit klaren Fehlerstellen.
- SQL-Formatierer
Formatiert und verschönert SQL – mehrere Dialekte.
- XML-Formatierer
Formatiert und prüft XML – verschönern oder minimieren.
- CSV-zu-JSON-Konverter
CSV in JSON umwandeln und zurück — mit korrekter Anführungslogik.