Zum Hauptinhalt springen

JSON zu Markdown-Tabelle

Dieser Konverter rendert ein JSON-Array von Objekten als GitHub-flavoured Markdown-Tabelle in Ihrem Browser. Die Spalten sind die sortierte Vereinigung aller Objektschlüssel, Pipes werden als \| escaped, Zeilenumbrüche werden zu <br>, und die Trennzeile passt zum Header – die Ausgabe lässt sich direkt in jeden Markdown-Renderer einfügen.

Nur lokal

JSON zu Markdown-Tabelle erklärt

Dokumentationen basieren auf Markdown-Tabellen – README-Feature-Listen, Changelog-Einträge, Vergleichsabschnitte in einem Pull Request – und die dahinterstehenden Daten beginnen meist als JSON: eine API-Antwort, ein Testbericht, ein Export. Eine Tabelle manuell zu schreiben ist fehleranfällig, da Markdown-Tabellen Regeln haben, die man leicht halb kennt: eine Zeile pro Zeile, Zellen durch Pipes getrennt, und eine Trennzeile, die entscheidet, ob die Spalten überhaupt existieren.

Dieser Konverter erledigt die Eingabe für Sie nach den Regeln von GitHub-flavoured Markdown. Die Kopfzeile ist die sortierte Vereinigung aller Objektschlüssel in der Reihenheit des erstmaligen Auftretens, sodass ein Schlüssel, der erst im zweiten Datensatz erscheint, trotzdem seine Spalte erhält. Eine Pipe innerhalb eines Werts wird als \| escaped, damit sie keine Zelle teilt, ein Zeilenumbruch innerhalb eines Werts wird zu <br>, damit er keine Zeile beendet, und verschachtelte Objekte oder Arrays in einem Datensatz werden als kompakter JSON-Text gerendert, sodass nichts verloren geht.

Wie auf der gesamten Seite geschieht die Konvertierung vollständig in Ihrem Browser. Das JSON wird mit dem Browser-eigenen JSON.parse geparst, das Markdown im Tab erstellt, und nichts wird irgendwo gesendet – DevTools' Network-Panel bleibt bei jeder Konvertierung stumm, und die Content-Security-Policy der Seite blockiert ausgehende Anfragen ohnehin.

Die Konvertierung ist in beide Richtungen nützlich – eine in einem Wiki gepflegte Tabelle kann wieder zu Daten werden – und die Markdown zu JSON-Konverter Seite parst GitHub-Tabellensyntax wieder in Datensätze.

Wenn das Ziel eine Tabellenkalkulation statt einer Dokumentation ist, dann erzeugt der JSON zu CSV-Konverter RFC-4180-konforme Zeilen aus denselben Datensätzen.

Wie die Konvertierung tatsächlich funktioniert

Die Engine parst Ihr JSON mit JSON.parse und erfordert, dass die oberste Ebene ein Array von Objekten ist – die einzige Form, die Zeilen bedeutet. Sie durchläuft dann die Datensätze einmal, um Schlüssel in eine sortierte Vereinigung zu sammeln: die Schlüssel des ersten Datensatzes eröffnen die Tabelle, und ein Schlüssel, der später erst auftritt, wird rechts angehängt, anstatt die bestehende Spaltenreihenfolge zu verschieben. Datensätze, die einen Schlüssel nicht haben, lassen die Zelle einfach leer. Das Ergebnis hängt nicht von Werkzeugen ab, die Sie nicht haben: die Tabelle ist reiner Text, sodass sie Kopieren-Einfügen, Code-Reviews und statische Site-Bauten überlebt. Dann wird die Tabelle geschrieben, nach einer Regel pro Risiko:

  • Header: eine Zeile mit den Schlüsseln der Vereinigung, dann eine Trennzeile mit drei Strichen pro Spalte – die Zeile, die den Block in jedem GitHub-flavoured Renderer zu einer Tabelle macht.
  • Pipes: ein | innerhalb eines Werts wird als \| ausgegeben, die Escape-Sequenz, die GFM definiert, sodass ein Wert wie a|b in einer einzigen Zelle bleibt.
  • Zeilenumbrüche: ein \n innerhalb eines Werts wird zu <br>, weil ein echter Zeilenumbruch die Zeile beenden und alles darunter verderben würde.
  • Verschachtelte Werte: ein Objekt oder Array innerhalb eines Datensatzes wird als kompakter JSON-Text in seiner Zelle gerendert, sodass verschachtelte Daten sichtbar bleiben und nicht stillschweigend entfernt werden.

So sieht die Ausgabe aus

Das Arbeitsbeispiel unten ist das exakte Paar, das der Konverter mit dem Button Beispieldaten lädt: zwei Personen, wobei der Wert 'notes' des ersten Datensatzes eine Pipe und der des zweiten einen Zeilenumbruch enthält. Die escaped Pipe rendert als ein einfaches | in ihrer Zelle, der Zeilenumbruch rendert als Zeilenumbruch unter <br>, und beide Zeilen behalten ihre drei Spalten. Zeilen sind in führende und abschließende Pipes eingeschlossen, die Form, die jeder Renderer und Diff-Tool am zuverlässigsten liest.

Fügen Sie die Ausgabe in jeden GitHub-flavoured Renderer ein, und die Vorschau, die Sie dort sehen, ist das, was Leser erhalten. Die Tabelle ist auch aus einem Grund stabil bei Diffs: die Spaltenreihenfolge hängt von der Dokumentenreihenfolge ab, nicht von einer Sortierung, sodass ein Datensatz, der einen Schlüssel erhält, eine Spalte anhängt, anstatt die Spalten umzuschichten, die Ihre Leser bereits kennen.

Die Zellenregeln im Überblick

Jedes Risiko, das eine Tabellenzelle enthalten kann, und seine ausgegebene Form:

ZelleninhaltWird ausgegeben alsWarum
a|ba\|bEine rohe Pipe würde die Zelle teilen
Zeile eins\nZeile zweiZeile eins<br>Zeile zweiEin roher Zeilenumbruch würde die Zeile beenden
{"x": 1}Kompakter JSON-TextVerschachtelte Werte werden angezeigt, nicht entfernt
truetrueBoolesche Werte werden unverändert gerendert
(fehlender Schlüssel)(leere Zelle)Ungleiche Datensätze bleiben ausgerichtet

Eingaben, die dieser Konverter ablehnt

Zwei Formen haben keine treue Tabellendarstellung und werden mit einer spezifischen Nachricht abgelehnt, anstatt erzwungen zu werden:

  • Eine oberste Ebene, die kein Array ist – ein einzelnes Objekt ist eine Zeile ohne Tabelle, die es zu verbinden gibt, und es in ein synthetisches Array zu packen, würde erfundene Struktur erzeugen, die Sie nicht geschrieben haben.
  • Ein Array, dessen Elemente nicht alle Objekte sind – eine Liste von Skalaren hat keine Schlüssel, also gibt es nichts, was zu Spaltenheadern werden könnte; der Konverter benennt den fehlerhaften Index.

Häufig gestellte Fragen

Wird beim Konvertieren von JSON zu Markdown Daten an einen Server gesendet?

Nein. Parsing und Rendering laufen beide in diesem Browser-Tab mit seitenlokalem JavaScript. Es gibt keinen Upload-Endpunkt, und die Content-Security-Policy verbietet ausgehende Verbindungen. Sie können beide in DevTools bestätigen: öffnen Sie das Network-Panel, konvertieren Sie ein Dokument, und beobachten Sie, dass zu keinem Zeitpunkt eine Anfrage gestellt wird.

Für welchen Markdown-Dialekt ist die Ausgabe geschrieben?

GitHub-flavoured Markdown, die Tabellensyntax, die von GitHub, GitLab und den meisten Dokumentationstools verwendet wird. Das Merkmal ist die Trennzeile aus Strichen unter dem Header – dieser Konverter gibt drei Striche pro Spalte ohne Ausrichtungs-Doppelpunkte aus, sodass Zellen standardmäßig links ausgerichtet sind – und Zeilen führen führende und abschließende Pipes für maximale Renderer-Kompatibilität.

Warum muss eine Pipe in meinem Wert escaped werden?

Weil die Pipe der Zellentrenner ist: ein rohes | würde als Ende einer Zelle und Anfang der nächsten gelesen werden, was alle folgenden Zellen verschieben würde. GFMs Escape-Sequenz ist die Backslash-Pipe-Paarung \|, die als einfache Pipe in der Zelle gerendert wird. Der Konverter wendet sie auf jeden Wert an, sodass ein Codebeispiel wie a|b in der Tabelle so ankommt, wie es begonnen hat.

Warum werden Zeilenumbrüche in Werten zu <br> und nicht zu echten Zeilenumbrüchen?

Eine Markdown-Tabellenzeile ist per Definition eine einzelne Zeile – ein roher Zeilenumbruch in einer Zelle beendet die Zeile, und der Renderer behandelt den Rest als neuen Absatz, was die Tabelle zerstört. Das HTML-Tag <br> rendert als Zeilenumbruch innerhalb der Zelle, was die Konvention ist, die GitHub selbst für mehrzeiligen Zelleninhalt dokumentiert.

Wie wird die Spaltenreihenfolge entschieden?

Durch die Vereinigung aller Datensatzschlüssel in der Reihenheit des erstmaligen Auftretens: die Schlüssel des ersten Datensatzes legen die anfänglichen Spalten fest, und jeder später auftretende Schlüssel wird rechts angehängt. Datensätze, die einen Schlüssel nicht haben, lassen die Zelle leer. Die Reihenfolge ist stabil – Dokumentenreihenfolge, nicht alphabetisch – weil ein Konverter, der Ihre Spalten neu sortieren würde, jeden späteren Diff der Ausgabe launisch machen würde.

Was passiert mit verschachtelten Objekten und Arrays in einem Datensatz?

Sie werden als kompakter JSON-Text in ihrer Zelle gerendert, sodass die Informationen sichtbar bleiben, anstatt entfernt oder unkenntlich abgeflacht zu werden. Wenn die verschachtelte Struktur downstream wichtig ist – Filtern, Sortieren, Diagramme – flachen Sie sie zuerst mit dem JSON-zu-CSV-Konverter ab, der verschachtelte Pfade in Spalten umwandelt; zum Lesen und Review ist die JSON-Text-Zelle meist genau richtig.