Der Code dieser Seite ist nicht gestartet.

Wird index.html direkt aus einem Ordner geöffnet, blockiert der Browser JavaScript-Module, und wenn Sie eine Datei auswählen, passiert nichts. Stellen Sie den Ordner stattdessen über HTTP bereit:

powershell -ExecutionPolicy Bypass -File serve.ps1

Öffnen Sie dann http://localhost:8080/.

JSON-Formatierer — auslegen, flach pressen oder umwandeln

JSON, XML, HTML, CSS und YAML, formatiert oder umgewandelt. Nichts davon wird in den Server eines anderen eingefügt.

Sprache: Deutsch
Quellcode ansehen
Ihre Texte und Codes werden in Ihrem Browser verarbeitet. Kein Upload zur Verarbeitung.

Formatieren und Umwandeln sind Rechnen auf einer Zeichenkette, und zwar hier, auf dieser Seite. Die Parser sind von Hand geschrieben und liegen in src/ — shared/parse-json.js, shared/parse-xml.js, css.js, shared/parse-yaml.js — und mehr gibt es nicht. Eine Netzfunktion hat dieses Werkzeug überhaupt nicht, weder etwas abzurufen noch etwas zu senden. Das wiegt hier schwerer als fast überall sonst auf dieser Seite, denn was Menschen in einen Formatierer einfügen, sind Zugriffstoken, Sitzungscookies, Kundendaten und unveröffentlichter Code.

Live-Prüfung: wird geprüft…

Offline: wird geprüft…

Sie müssen uns nicht glauben. Öffnen Sie die DevTools, sehen Sie im Tab „Netzwerk“ zu und formatieren Sie etwas. Keine einzige Anfrage trägt ein Zeichen dessen, was Sie eingefügt haben. Oder trennen Sie die Internetverbindung und formatieren Sie es trotzdem.

1 Die Aufgabe wählen

Sprache Die Erkennung ist nur ein Ausgangspunkt, und sie zu korrigieren ist ein Klick.

Die Schlüssel jedes Objekts sortieren Danach, wie die Schlüssel sich lesen, und nicht nach ihren Codepunkten, item2 steht also vor item10. Nur bei JSON.

Name für das äußere Element XML hat oben genau ein Element und JSON nicht, also muss eines erfunden werden.

2 Einfügen

leer

3 Das Ergebnis mitnehmen

Noch nichts.

 

Als Markdown ansehen

So formatieren oder wandeln Sie JSON um, ohne es hochzuladen

  1. Wählen Sie die Aufgabe. Zwei Reiter, ein Eingabefeld: Formatieren legt JSON, XML, HTML, CSS und YAML aus oder presst sie zusammen; Umwandeln macht aus JSON YAML oder XML und zurück. Der Text, den Sie gerade formatiert haben, ist der Text, den Sie umwandeln, ohne ihn zweimal einzufügen.
  2. Fügen Sie ihn ein oder ziehen Sie die Datei her. Alles, was sich markieren und kopieren lässt, funktioniert. Eine auf das Auswahlfeld gezogene Datei liest Ihr eigener Browser und legt sie ins Feld. Einen Upload-Schritt gibt es hier nicht wegzulassen.
  3. Lassen Sie die Sprache erkennen, oder sagen Sie sie. Das Menü zeigt, als was der Text gelesen wurde, und das zu korrigieren ist ein Klick. Eine Erkennung ist nur ein Ausgangspunkt, und deshalb wird sie angezeigt statt stillschweigend angewendet.
  4. Wählen Sie die Einrückung, oder pressen Sie es flach. Zwei Leerzeichen, vier oder ein Tabulator. Flach gepresst ist dasselbe Dokument, nur ohne jedes Leerzeichen, das nur zum Lesen da war, und das Ergebnis sagt, wie viele Bytes das gespart hat.
  5. Lesen Sie den Fehler dort, wo der Fehler ist. Ein Parser, der hier scheitert, sagt, was er gefunden hat und in welcher Zeile und Spalte, statt „unerwartetes Zeichen an Position 4193“. Das reicht meist, um eine Konfigurationsdatei zu reparieren, ohne sonst etwas zu öffnen.
  6. Nehmen Sie das Ergebnis mit. Kopieren Sie es, oder laden Sie es als Datei herunter, benannt nach der Sprache, in der es herauskam.

Die ausführliche Fassung

JSON formatieren, ohne es jemandem zu geben JSON im eigenen Browser einrücken, prüfen und minifizieren: was ein Formatierer an Ihrer Datei niemals ändern darf, wie Sie die Fehlermeldung lesen, und warum es zählt, in welches Feld Sie das einfügen.

Fragen

Wird mein Text irgendwohin hochgeladen?

Nein. Alles, was auf dieser Seite liest oder schreibt, sind Funktionen, die in Ihrem eigenen Browser auf Ihrer eigenen Hardware laufen. Eine Netzfunktion hat dieses Werkzeug überhaupt nicht, es ruft nie etwas ab und sendet nie etwas, und in der Content-Security-Policy der Seite steht jede Adresse, die sie kontaktieren darf; keine davon gehört uns. Genau deshalb sollte man es für ein Zugriffstoken, ein Sitzungscookie oder einen Kundendatensatz nehmen: So etwas in den Formatierer eines anderen einzufügen, heißt, es ihm zu geben.

Ändert das Formatieren von JSON etwas außer der Anordnung?

Nein, und das ist schwerer, als es klingt. Die Schlüssel behalten die Reihenfolge, in der Sie sie geschrieben haben. Ein Formatierer, der auf JSON.parse aufbaut, zieht zahlartige Schlüssel stillschweigend nach vorn, aus {"10":a,"2":b} wird also {"2":b,"10":a}. Zahlen behalten die Ziffern, die Sie getippt haben, eine zwanzigstellige Kennung verliert ihre letzten drei also nicht an eine Fließkommazahl, und 1e999 wird nicht zu null. Doppelte Schlüssel bleiben beide erhalten, denn der Standard sagt nicht, welcher gewinnt, und einen wegzuwerfen hieße, für Sie zu entscheiden.

Welche Sprachen kann es formatieren?

JSON, XML, HTML, CSS und YAML. JSON, XML, HTML und CSS lassen sich auch flach pressen, YAML nicht: Seine Kurzform ist der Flow-Stil, und der ist unlesbar, und unlesbar ist das Gegenteil des Grundes, eine Datei überhaupt in YAML zu halten. JavaScript steht mit Absicht nicht auf der Liste, siehe die Frage weiter unten.

Warum formatiert es kein JavaScript, Python oder SQL?

Weil eine Programmiersprache auszulegen bedeutet, sie richtig zu parsen, und ein Formatierer, der es fast richtig macht, ist schlimmer als gar keiner: Er erzeugt Code, der gut aussieht und etwas anderes tut. JSON, XML, CSS und YAML haben kleine genug Grammatiken, um von Hand gelesen und mit Tests geprüft zu werden, die Sie selbst ausführen können. Ein JavaScript-Formatierer ist Prettier, das ist ein Megabyte Parser, und der gehört in Ihren Editor und nicht auf eine Webseite.

Mein YAML sagt no, und aus dem JSON wurde eine Zeichenkette. Warum?

Weil es eine Zeichenkette ist: Hier wird YAML 1.2 gelesen und nicht 1.1. In YAML 1.1 waren yes, no, on und off Wahrheitswerte, und das ist der berühmte Fehler, der den Ländercode für Norwegen zu false macht. YAML 1.2 hat das abgeschafft, und dieses Werkzeug ebenso: Nur true, false, null und ~ werden als etwas anderes gelesen als Text. In die andere Richtung werden diese Wörter in Anführungszeichen zurückgeschrieben, obwohl dieses Werkzeug sie auch ohne als Text läse, denn was die Datei als Nächstes öffnet, tut das vielleicht nicht. PyYAML nimmt weiterhin standardmäßig 1.1. Streng zu lesen und vorsichtig zu schreiben ist die einzige Kombination, die in beide Richtungen stimmt.

Was geht bei der Umwandlung von YAML nach JSON verloren?

Kommentare, denn JSON hat keinen Ort für sie. Anker, Aliase und Tags werden rundheraus abgelehnt statt geraten: Jedes davon sagt etwas, was JSON nicht sagen kann, und ein Umwandler, der sich stillschweigend für eine Auslegung entschiede, gäbe Ihnen ein Dokument, das nicht das ist, was in der Datei stand. In die andere Richtung geht nichts verloren: Jedes JSON-Dokument ist bereits ein YAML-Dokument.

Was geht bei der Umwandlung von JSON nach XML verloren?

Der Unterschied zwischen einem leeren Objekt, einem leeren Array und einer leeren Zeichenkette, die alle zu einem leeren Element werden, und der Typ jedes Werts, denn XML hat keine Typen. Deshalb lässt die Rückumwandlung auch alles als Zeichenkette stehen, statt zu entscheiden, dass 8080 eine Zahl war. Aus einem Array wird ein wiederholtes Element, denn nur diese Form lässt sich zurücklesen, und bei einem Schlüssel, den ein Elementname nicht tragen kann, werden die sperrigen Zeichen ersetzt, statt ein Dokument auszugeben, das kein Parser liest.

Ändert das Neu-Einrücken von HTML das Aussehen der Seite?

Es kann, und das wird hier ehrlich gesagt. Leerraum zwischen zwei Inline-Elementen ist ein Abstand zwischen zwei Wörtern, ihn zu verschieben ist also nicht umsonst. Zwei Dinge halten das im Zaum: <pre> und <textarea> werden exakt so übernommen, wie sie waren, und ein Element, das nichts als Text enthält, bleibt in einer Zeile. Alles andere wird ausgelegt.

Wie groß darf die Datei sein?

Hier ist keine Grenze gesetzt, denn es zahlt kein Server dafür. Die praktische Obergrenze ist Ihr eigenes Gerät: Ein paar Megabyte JSON sind kein Problem, und bei einem sehr langen Dokument wartet die Seite auf eine Pause in Ihrem Tippen, statt mit Ihnen um die Tastatur zu kämpfen.

Ist es kostenlos, und brauche ich ein Konto?

Es ist kostenlos, und es gibt kein Konto, keine Anmeldung, keine Testphase und keine Grenze dafür, wie viel Sie einfügen. Bezahlt wird die Seite über Werbung, und den Anzeigen wird nichts über Ihren Text übergeben.

Funktioniert es offline?

Ja. Laden Sie die Seite einmal, trennen Sie dann die Internetverbindung, und sie arbeitet weiter. Das ist zugleich der einfachste Beweis dafür, dass nichts hochgeladen wird. Ein Werkzeug, das Ihren Text zum Formatieren wegschickt, bliebe in dem Moment stehen, in dem Sie den Stecker ziehen.