Zum Hauptinhalt springen

Markdown-Tabelle zu JSON

Dieser Konverter verwandelt eine GitHub-Flavour-Markdown-Tabelle in ein JSON-Array von Datensätzen in Ihrem Browser. Die Kopfzeile liefert die Schlüssel, Zellen werden bereinigt und Typen werden abgeleitet: Zahlen, Boolesche Werte und null, wobei leere Zellen null zugeordnet werden. Maskierte Pipes werden dekodiert, die Trennzeile ist erforderlich und es wird nichts hochgeladen.

Nur lokal

Markdown-Tabelle zu JSON erklärt

Markdown-Tabellen sind die Art und Weise, wie READMEs, Dokumentationen und Issue-Tracker Datensätze darstellen; JSON ist das Format, in das Skripte diese einlesen. Eine Tabelle besteht bereits aus Zeilen und Spalten, also dreht sich die Konversion hauptsächlich um das Benennen der Spalten und die Interpretation jeder Zelle. Dieser Konverter parst GitHub-Flavour-Markdown-Tabellen in ein JSON-Array von Datensätzen – ein Objekt pro Zeile, mit Schlüsseln aus der Kopfzeile.

Der knifflige Teil ist die Typisierung. Eine Markdown-Zelle ist nur Text, aber JSON kennt Zahlen, Boolesche Werte und null, und eine Tabelle voller „42“-Zeichenketten ist selten das, was nachgelagerte Prozesse benötigen. Dieser Konverter leitet ab: Ziffern werden zu Zahlen, true und false werden zu Booleschen Werten, leere Zellen werden zu null. Die Typinferenz kann gelegentlich überraschen, daher sind die Regeln – inklusive führender Nullen bei Postleitzahlen – hier aufgeführt, um nicht in eine Falle zu tappen.

Alles läuft in diesem Browser-Tab: Ihre Tabelle wird von einer im Seiten-Code laufenden Engine geparst, das JSON wird daneben serialisiert, und es werden keinerlei Anfragen gesendet – öffnen Sie DevTools und beobachten Sie, wie das Netzwerk-Panel beim Konvertieren leer bleibt.

Tabellen fließen oft in die entgegengesetzte Richtung – wenn ein JSON-Export in Dokumentation landen muss, der JSON-in-Markdown-Tabelle-Konverter emittiert GitHub-Flavour-Tabellen mit angewandter Pipe-Escaping.

Wenn der JSON-Teil des Datenaustauschs Ihnen weniger vertraut ist, bietet die Website ein einfache Einführung in JSON das Objekte, Arrays und Datentypen von Grund auf erklärt.

Wie die Konversion tatsächlich funktioniert

GitHub-Flavour-Markdown definiert eine Tabelle aus drei Teilen: eine Kopfzeile mit Spaltennamen, eine Trennzeile mit Bindestrichen und null oder mehrere Zeilen mit Daten. Die Trennzeile ist nicht nur Dekoration – in GFM macht sie die vorherige Zeile überhaupt erst zu einer Tabelle. Der Konverter verarbeitet die Teile in dieser Reihenfolge:

  • Normalisieren: führende und abschließende Pipes sind in GFM optional und werden hier toleriert; Leerzeichen um jede Zelle werden vor allem anderen entfernt.
  • Aufteilen: Zellen werden an unmaskierten Pipes aufgeteilt; ein mit Backslash maskiertes Pipe-Zeichen (\|) wird im Wert zu einem wörtlichen | Zeichen.
  • Zuordnen: Die Kopfzeile liefert die Objektschlüssel in Spaltenreihenfolge, und jede Datenzeile wird zu einem Objekt mit diesen Schlüsseln.
  • Typumwandlung: Jede bereinigte Zelle wird als Zahl, Boolescher Wert oder null abgeleitet; alles andere bleibt eine Zeichenkette – einschließlich jeder in Anführungszeichen gesetzten Zelle, die die Typumwandlung deaktiviert.

Regeln zur Typinferenz

Eine Tabellenzelle hat kein Typsystem, daher muss der Konverter einen wählen, und Ehrlichkeit erfordert, klarzustellen, wo dies zu Problemen führen kann. Die Regeln gelten für den bereinigten Zellentext, in dieser Reihenfolge:

Die letzten beiden Zeilen sind die bekannten Ausnahmen. Eine Postleitzahl, Telefonnummer oder Produktkennung ohne Anführungszeichen wird zu einer Zahl, und eine führende Null geht dabei verloren. Um einen Wert als Zeichenkette beizubehalten, setzen Sie die Zelle in doppelte Anführungszeichen in der Markdown-Tabelle; der Konverter behält sie dann als Zeichenkette bei. Der Kompromiss ist beabsichtigt: Alles als Zeichenkette zu behandeln, würde die Postleitzahl retten, aber jeden Konsumenten, der echte Zahlen erwartet, stillschweigend stören.

ZellinhaltJSON-Wert
42die Zahl 42
-3.5die Zahl -3.5
true / falsedie Booleschen Werte true und false
nullnull
(leere Zelle)null
"02134"die Zeichenkette "02134" – Anführungszeichen deaktivieren die Typumwandlung
02134die Zahl 2134 – die führende Null ist weg

Wie das Ergebnis aussieht

Das folgende Arbeitsbeispiel ist genau das Paar, das der Button Beispielladen erzeugt: eine vier Spalten umfassende Tabelle mit einer Zahl, einem booleschen Wert und einer leeren Zelle. Die leere Notiz-Zelle im zweiten Datensatz wird zu einem expliziten null anstatt einer leeren Zeichenkette, sodass der Unterschied, den der Tabellenautor gemacht hat, im JSON erhalten bleibt. Das Ergebnis ist mit zwei Leerzeichen formatiert, um Diff-Operationen lesbar zu halten.

Eingaben, die dieser Konverter ablehnt statt zu verzerren

Zwei fehlerhafte Eingaben führen zu einem benannten Fehler anstatt zu einem geratenen Ergebnis, da sonst fehlerhafte Datensätze erzeugt würden:

  • Keine Trennzeile – in GFM ist eine Zeile mit Pipes ohne eine Zeile mit Bindestrichen darunter ein Absatz, keine Tabelle. Ohne Trennzeile gibt es nichts als verlässliche Kopfzeile, daher lehnt der Konverter die Eingabe ab und benennt die Zeile, in der er gesucht hat.
  • Eine Zeile, die breiter ist als die Kopfzeile – überschüssige Zellen haben keinen Schlüssel, unter dem sie zugeordnet werden könnten, und GFM ignoriert sie stillschweigend. Daten stillschweigend zu verwerfen ist schlimmer als ein Fehler, daher meldet der Konverter die Nummer der fehlerhaften Zeile. Kurzere Zeilen werden mit null aufgefüllt, sodass jeder Datensatz dieselbe Struktur behält.

Häufig gestellte Fragen

Lädt die Konversion einer Markdown-Tabelle in JSON meine Daten irgendwo hoch?

Nein. Parsing und Serialisierung finden beide in diesem Browser-Tab in JavaScript statt, das mit der Seite geladen wurde. Die Seite enthält keinen Upload-Endpunkt, und die Content-Security-Policy der Seite blockiert ausgehende Verbindungen, sodass die Seite nicht unbeabsichtigt Daten senden kann. Überzeugen Sie sich selbst in Sekunden: Öffnen Sie DevTools, beobachten Sie das Netzwerk-Panel, konvertieren Sie – es erscheint keine Anfrage.

Warum ist die Trennzeile mit Bindestrichen erforderlich?

In GitHub-Flavour-Markdown ist die Trennzeile (| --- | --- |) das, was zwei Zeilen mit Pipes in eine Tabelle verwandelt; ohne sie ist der Text nur ein Absatz mit Pipes. Da die Kopfzeile die JSON-Schlüssel liefert, fehlt bei fehlender Trennzeile eine verlässliche Grundlage für das Schema, daher lehnt der Konverter die Eingabe ab und benennt die Zeile. Ausrichtungs-Doppelpunkte wie :---: werden toleriert.

Wie setze ich ein Pipe-Zeichen (|) wörtlich in eine Zelle?

Maskieren Sie es mit einem Backslash: \| in einer Zelle wird zu einem einzelnen | in der JSON-Zeichenkette. Das ist eine GFM-Regel, keine Präferenz des Konverters – ein unmaskiertes Pipe-Zeichen würde als Spaltentrennzeile interpretiert und alle folgenden Zellen verschieben. Der umgekehrte Konverter wendet dieselbe Maskierung beim Schreiben von Tabellen an, sodass ein Wert mit Pipe eine Hin- und Rückreise unverändert übersteht.

Was passiert mit Werten, die mit einer Null beginnen, wie eine Postleitzahl?

Ein unmaskiertes 02134 wird als die Zahl 2134 abgeleitet, da JSON-Zahlen keine führende Null darstellen können. Der Konverter macht für Postleitzahlen, Telefonnummern oder SKU-Codes keine stillschweigende Ausnahme – er gibt stattdessen die Regel an. Um einen Wert als Zeichenkette zu behalten, setzen Sie die Zelle in doppelte Anführungszeichen in der Markdown-Tabelle ("02134"); die Anführungszeichen kennzeichnen sie als bewusste Zeichenkette und werden aus dem Wert entfernt.

Was passiert, wenn Zeilen eine unterschiedliche Anzahl von Zellen haben?

Eine kürzere Zeile als die Kopfzeile wird mit null für jede fehlende Spalte aufgefüllt, sodass jeder Datensatz dieselbe Struktur behält. Eine längere Zeile als die Kopfzeile wird mit der Zeilennummer abgelehnt, da die überschüssigen Zellen keinen Schlüssel haben und sie stillschweigend zu verwerfen die Datensätze verfälschen würde. Korrigieren Sie die Zeile, nicht das Schema.

Kann ich JSON wieder in eine Markdown-Tabelle umwandeln?

Ja – diese Richtung wird auf der Website vollständig abgedeckt. Der JSON-in-Markdown-Tabelle-Konverter nimmt ein Array von Datensätzen, vereinigt deren Schlüssel zu einer Kopfzeile und erzeugt eine GFM-Tabelle mit angewandtem Pipe-Escaping, wo nötig. Zusammen ergeben die beiden Seiten für jede Form, die eine Tabelle annehmen kann, verlustfreie Rundreisen in der Dokumentation.