von JSON nach Markdown... nur wie bzw. womit?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
grubenfox
User
Beiträge: 643
Registriert: Freitag 2. Dezember 2022, 15:49

Hi allersetis,

ich suche gerade nach einer Möglichkeit JSON-Dateien in Markdown-Dateien zu verwandeln.... entweder was fertiges, was ich mir auf dem Rechner lokal installieren kann oder eigentlich noch lieber was fertiges in Python geschriebenes, so dass ich da noch bei Bedarf eigenen Ergänzungen und Erweiterungen einbauen kann.

Eine schnelle kurze Suche hat mich zu folgendem geführt:

https://github.com/PolBaladas/torsimany
7 Jahre alt! Ich glaube das möchte ich eher nicht haben...

https://pypi.org/project/jsonschema2md/
Zwar noch im Beta-Status, aber wenn ich mir das Repository https://github.com/sbrunner/jsonschema2md anschaue, dann scheint da die Entwicklung noch aktiv am laufen zu sein.

Was schön ist, ist dieser hier:
https://github.com/memochou1993/json2markdown/tree/main
mit Link zur Demo von dem Konverter https://memochou1993.github.io/json2markdown-converter/
und die Demo liefert schon ein sehr schönes Ergebnis. Könnte ich Typescript, dann würde ich vielleicht dort für mich noch ein paar Änderungen einbauen. Aber mangels Plan in Sachen Typescript oben die Frage nach etwas vergleichbaren in Python...
Benutzeravatar
sparrow
User
Beiträge: 4633
Registriert: Freitag 17. April 2009, 10:28

Ich habe zwar keine Antwort, aber eine Frage:
Warum möchte man denn ein Datenformat in eine Auszeichnungssprache wandeln?
nezzcarth
User
Beiträge: 1798
Registriert: Samstag 16. April 2011, 12:47

Letztendlich ist JSON ja nur eine allgemeine Serialisierung/Notation, während die in einer konkreten JSON-Datei kodierten Daten einem beliebigen Datenmodell folgen können. Eine Markdown-Version aus einem spezifischen JSON-basierten Datei-Format zu erzeugen, ist an sich grundsätzlich kein Problem, wenn sich für das Format eine sinnvolle Markdown-Konversion ergibt. Aber eine allgemein gültige Konvertierung nach Markdown kann ich mir nur als sehr abstrakt vorstellen, nicht zuletzt weil JSON theoretisch endlos verschachtelbar ist und zumindest Vanilla Markdown ja jetzt auch nicht das ausdrucksstärkste Format ist. Man kann halt für jedes Element in JSON und vielleicht noch für jede Verschachtelungskombination eine Darstellung finden, aber viel mehr sehe ich da, so allgemein, nicht zu holen. Während aus der konkret vorliegenden Datei mit einem maßgeschneiderten Konvertierungstool vielleicht mehr möglich wäre. Was erwartest du dir denn von so einem Tool, bzw. wie stellst du dir das Ergebnis vor?
Benutzeravatar
grubenfox
User
Beiträge: 643
Registriert: Freitag 2. Dezember 2022, 15:49

nezzcarth hat geschrieben: Freitag 30. Januar 2026, 21:31 wie stellst du dir das Ergebnis vor?
größtenteils so wie da würde mir wohl reichen: https://memochou1993.github.io/json2markdown-converter/
Weitere Beschreibung: https://dev.to/memochou1993/convert-jso ... conds-2i2n
Also so wie es dort jetzt ist. Wenn ich es dann in einigen Monaten wieder benötige und die Demo dann den Kram anders konvertiert oder die Webseite gar nicht mehr da ist... :(

Daher hätte ich da lieber etwas lokales hier auf dem Rechner. Aber wirklich nur zwei Projekte im Web und pypi? Irgendwie finde ich aktuell mehr Python-Projekte die Markdown nach json umwandeln, aber eben nicht die andere Richtung. Aber wenn es da wirklich keine anderen Alternativen gibt, dann werde ich mir mal jsonschema2md genauer anschauen.
nezzcarth
User
Beiträge: 1798
Registriert: Samstag 16. April 2011, 12:47

grubenfox hat geschrieben: Samstag 31. Januar 2026, 00:15 Irgendwie finde ich aktuell mehr Python-Projekte die Markdown nach json umwandeln, aber eben nicht die andere Richtung. Aber wenn es da wirklich keine anderen Alternativen gibt, dann werde ich mir mal jsonschema2md genauer anschauen.
Na ja, für mich ergibt es schon Sinn, dass die andere Richtung üblicher ist. Markdown ist ein relativ konkretes Format (wenn man einen spezifischen Flavor zugrunde legt) und die Konvertierung nach JSON ist dann "nur" die Überführung in eine andere Darstellungsform, die sich besser für die Verarbeitung handelt. Umgekehrt ist JSON aber eher eine Art Grundstruktur, um darauf aufbauend ganz verschiedene Datenformate zu definieren. Da kann alles mögliche drin sein und wenn man das nach Markdown konvertiert, kann da, wenn man das so allgemein hält, auch nur was sehr allgemeines rauskommen. Also im Prinzip nur eine Darstellung, der Struktur, die es etwas leichter lesbar macht. Da JSON aber an sich ja schon recht gut lesbar ist (ggf. durch einen Formatierungstool jagen; python bringt mit 'python -m json.tool' ja schon eines mit; ich benutze auch gerne 'jq' dafür), sehe ich da irgendwie den Bedarf nicht so ganz.

JSON Schema ist ein spezifisches, auf JSON-basierendes Format, um JSON-Formate zu definieren und Daten zu validieren. Also grob das Gegenstück zu den verschiedenen Schemasprachen (XML Schema, RELAX NG, etc.) aus der XML-Welt. Nach meinem Verständnis erzeugt jsonschema2md "nur" eine Doku für solche Schemadateien. Das ist im Grunde also genau das, ich meinte: Man hat ein konkretes, auf JSON-basierendes Format (JSON Schema) und kann da dann auch eine Konvertierung nach Markdown basteln, die auf dieses Format zugeschnitten und dessen Eigenschaften berücksichtigt.
Benutzeravatar
noisefloor
User
Beiträge: 4297
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

sehe ich auch so... die beiden Seiten, die (angeblich) JSON in Markdown "konvertieren", definieren "nur" eine Struktur in JSON, die Markdown-Markup irgendwie nachstellt - und man darum aus genau dieser JSON-Struktur Markdown erzeugen kann - weil halt irgendwer den passenden Konverter geschrieben hat. JSON könnte man hier auch genau so gut durch ein Python-Dict oder TOML oder YAML oder ... ersetzen. Und Markdown durch reST oder HTML oder ...

Wie schon gesagt wurde: einen generischen JSON -> Markdown Konverter kann es gar nicht geben, weil JSON und Markdown zwei Paar Schuhe sind,.

Gruß, noisefloor
Sirius3
User
Beiträge: 18357
Registriert: Sonntag 21. Oktober 2012, 17:20

@grubenfox: ich verstehe noch nicht, was das Ziel sein soll.
Hast Du eine JSON-Datei mit einer bestimmten Struktur, die Du gerne in lesbare Form bringen möchtest?
Warum dann Markdown und nicht direkt HTML?
Für diese Aufgabe würde ich irgendeine Template-Engine wie Jinja nehmen.
Benutzeravatar
__blackjack__
User
Beiträge: 14299
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Bei generischem JSON nach Markdown würde ich wahrscheinlich einfach das JSON lesbar formatieren und dann in einen fenced code block setzen, in der IMHO angebrachten Hoffnung, dass das Markdown-Backend das kann. Beides recht einfach in Python. Beispielsweise ein Filter in den man JSON rein pipen kann und der das Ergebnis ausgibt:

Code: Alles auswählen

#!/usr/bin/env python3
import json
import sys


def main():
    formatted_json = json.dumps(
        json.load(sys.stdin.buffer), indent=2, ensure_ascii=False
    )
    print(f"```json\n{formatted_json}\n```")


if __name__ == "__main__":
    main()
Falls das Ziel eigentlich eine HTML-Darstellung ist, würde ich nicht den Umweg über Markdown gehen, weil man in HTML mehr Möglichkeiten hat, wenn man die Struktur als verschachtelte <div>-Elemente macht. Da kann man noch mit CSS-Klassen auszeichnen und auch so Sachen wie ein-/ausklappbare Unterstrukturen oder Tooltips mit dem Pfad zu einem Element etc. machen.
„Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.“ — Brian W. Kernighan
Benutzeravatar
grubenfox
User
Beiträge: 643
Registriert: Freitag 2. Dezember 2022, 15:49

Ja, das mit dem fenced code block sollte wohl funktionieren. Aber ob es für mich schon alleine dadurch übersichtlicher wird? Ich weiß nicht so recht. Ich würde es da gerne mal mit ein-/ausklappbare Unterstrukturen und Tooltips usw. probieren und das geht eigentlich sehr gut mit "Obsidian", dazu muss der ganze Kram eben nur im Mark-Down-Format vorliegen.
imonbln
User
Beiträge: 199
Registriert: Freitag 3. Dezember 2021, 17:07

grubenfox hat geschrieben: Freitag 30. Januar 2026, 19:08
ich suche gerade nach einer Möglichkeit JSON-Dateien in Markdown-Dateien zu verwandeln.... entweder was fertiges, was ich mir auf dem Rechner lokal installieren kann oder eigentlich noch lieber was fertiges in Python geschriebenes, so dass ich da noch bei Bedarf eigenen Ergänzungen und Erweiterungen einbauen kann.
Wie wäre es mit der Jinja2-Template-Engine? Ich verwende sie gerne unter anderem, um aus strukturierten Daten Konfigurationen, Reports etc. zu erstellen. Du müsstest dann ein Markdown-Template schreiben, das dein JSON als Input bekommt, um die Daten irgendwie aufzubereiten und schön darzustellen.
nezzcarth
User
Beiträge: 1798
Registriert: Samstag 16. April 2011, 12:47

grubenfox hat geschrieben: Montag 2. Februar 2026, 09:08 Ich würde es da gerne mal mit ein-/ausklappbare Unterstrukturen und Tooltips usw. probieren und das geht eigentlich sehr gut mit "Obsidian", dazu muss der ganze Kram eben nur im Mark-Down-Format vorliegen.
Okay, also willst du eigentlich gar nicht unbedingt Markdown erzeugen, du willst die Struktur einer JSON-Datei verstehen, willst dafür Obsidian benutzen und braucht das Markdown als Zwischenschritt? Das ist in meinen Augen halt schon eine deutlich andere Anforderung als die, die für mich im Ausgangspost stand.

Es ja diverse Tools, die dafür gedacht sind, um JSON-Dateien strukturell zu verstehen, neben Pretty-Printern wie dem schon erwähnten 'python -m json.tool' oder 'jq . <dateiname>', über Kommandozeilentools wie 'fx' bis hin zu grafischen Visualisierungstools oder kommerziellen IDEs (z.B. oXygen kann auch JSON).
Benutzeravatar
DeaD_EyE
User
Beiträge: 1316
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Das erinnert mich an AutomationML(XML). Ein Austauschformat in XML, um Programme/Organisationsbausteine/Funktionen und Funktionsbausteine (KOP/FUP/SCL/Graph7/CFC/...) von Steuerungen unterschiedlicher Hersteller auszutauschen. Ja, manchmal muss man in den sauren Apfel beißen.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Antworten