JSON in XML oder XML in JSON direkt in der Seite umwandeln: Schlüssel werden zu Elementen, -Schlüssel zu Attributen, wiederholte Elemente kommen als Array zurück, und nicht lesbare Eingaben werden mit der Position des Parsers gemeldet statt in ein kaputtes Ergebnis zu führen.
Läuft lokal in deinem BrowserJSON in XML macht aus einem JSON-Objekt oder -Array ein XML-Dokument, XML in JSON liest ein XML-Dokument als JSON. Beide Richtungen laufen in der Seite, nichts Eingefügtes wird hochgeladen, und das Ergebnis erscheint im Bereich unter den Schaltflächen.
Die beiden Beispiel-Schaltflächen laden denselben kleinen Katalog in beiden Formaten: aus dem JSON-Beispiel wird das XML-Beispiel, und aus diesem XML-Beispiel wird wieder das JSON-Beispiel.
Das Dokument erhält genau ein Wurzelelement. Ein einzelner Schlüssel der obersten Ebene wird dieses Element – {"user":{"name":"Ann"}} wird zu <user><name>Ann</name></user> –, mehrere Schlüssel, ein Array auf oberster Ebene und ein einzelner Schlüssel mit einem Array darin werden dagegen in <root> verpackt; Array-Einträge ohne eigenen Namen werden als <item> geschrieben.
Innerhalb eines Elements wird ein Schlüssel zu einem Kindelement, und ein Array wiederholt sein Element einmal pro Eintrag. Ein Schlüssel, der mit - beginnt, wird zum Attribut, #text wird zum Text des Elements: {"a":{"-x":"1","#text":"hi"}} wird zu <a x="1">hi</a> – dieselbe Form, die die Richtung XML in JSON erzeugt, weshalb sich beide Richtungen verketten lassen. null und "" werden zu <name />.
Namen werden repariert statt fehlerhaft ausgegeben: Leerzeichen, < oder & in einem Schlüssel und ein Schlüssel, der mit einer Ziffer beginnt, werden mit Unterstrich geschrieben; die Statuszeile nennt die Anzahl geänderter Namen. Markup in einem Wert wird maskiert, und Anführungszeichen, Zeilenumbrüche und Tabulatoren in einem Attributwert werden als ", und 	 geschrieben, damit das Dokument gültig bleibt.
Attribute kommen mit dem Präfix - zurück, ein Element mit nur Text wird zur Zeichenkette, ein Element mit Kindern zum Objekt, und ein Name, der mehrfach vorkommt, wird zum Array: <r><i>1</i><i>2</i></r> wird zu {"r":{"i":["1","2"]}}, ein einzelnes <i> bleibt Zeichenkette. XML kennt keine Typen, Werte kommen also als Zeichenketten an: 24.90 in XML ist "24.90" in JSON.
Ein Element ohne Inhalt wird zur leeren Zeichenkette, Text in einem Element bleibt genau erhalten, samt Leerzeichen und Zeilenumbrüchen, und die Einrückung zwischen Elementen wird ignoriert. Kommentare entfallen, CDATA-Abschnitte werden als Text gelesen, und Text neben Kindelementen wird in einem Schlüssel #text gesammelt.
Die Umwandlung läuft in der Seite: Auch mit blockiertem Netzwerk funktioniert sie und sendet keine Anfrage, ein Dokument, das Ihren Rechner nicht verlassen darf, lässt sich also hier umwandeln. Ergebnisse bis 120.000 Zeichen werden farbig hervorgehoben, größere als reiner Text ausgegeben: 1.000 Zeilen (45 KB JSON zu 99 KB XML) brauchen mit Hervorhebung etwa 0,8 Sekunden, 5.000 Zeilen (233 KB zu 503 KB und zurück zu 618 KB JSON) zusammen etwa 0,2 Sekunden, gemessen in Chrome auf dieser Seite.
Dies ist ein Formatkonverter, kein Schema-Werkzeug: keine XSD- oder DTD-Prüfung, keine Namespace-Behandlung (ein Doppelpunkt im Namen wird als Unterstrich geschrieben) und keine Typerkennung. Tausendfach verschachtelte Dokumente werden mit einer Meldung abgelehnt, statt ein halbes Dokument stehen zu lassen.