Json-Datei Baumstruktur

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
Jyll
User
Beiträge: 26
Registriert: Montag 26. Juli 2021, 14:18

Hallo liebe Gemeinde, ich bin noch sehr neu in Python. Knabber nun seit Tagen an einem Problem, komme nicht weiter. Habe eine sehr große Json-Datei. Diese ist für mich so unleserlich, dass ich die Struktur nicht erkennen kann. Zudem ist sie auch im Texteditor kaum zu deuten, bzw. ist der aufgrund der Größe ständig überfordert. Gibt es ein Code-Beispiel, mit dem ich mir zunächst die Hauptstruktur mit den Überschriften anzeigen lassen kann. Im Internet hab ich so etwas online gefunden, nur die Datei ist anscheinend zu groß. Bitte nicht schimpfen - hab echt lange gesucht. Danke für die Hilfe und freundliche Grüße Jyll
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

@Jyll: JSON liest und schreibt man mit dem json Modul. Nach dem Parsen stehen die Daten in einer entsprechenden Python-Datenstruktur. In der Regel verschachtelte dicts und Listen.
Weiter kann man an der Stelle nichts sagen, denn was die Überschriftem sind, sehe ich in meiner Kristallkugel nicht.

Ich würde aber mal nachschauen, ob dein Browser das nicht anzeigen kann. Firefox tut das recht gut.
Jyll
User
Beiträge: 26
Registriert: Montag 26. Juli 2021, 14:18

Hi Sparrow, vielen Dank. Ja, das Einlesen klappt schon ganz gut mit dem json-Modul. Nur dann hört es schon auf ;-). Ich wollte eben eine bestimmt Liste aus der riesigen Json-Struktur als CSV-Datei zurück geben. Ich weiß noch nicht, wie ich genau an diese verschachtelte Liste ran komme, denn nur diese Liste wollte ich anschließend über panders oder for nach CSV geben. Hab mich jetzt kreuz und quer gelesen. Aber gerate immer wieder ins Abseits (verzweifelt). Deine Idee mit Firefox ist aber schon mal sehr gut. Bin gerade dabei und das könnte mir schon mal helfen, die Struktur besser zu erkennen. Danke.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@Jyll: man liest die json-Daten in einer Interaktiven Python-Shell und schaut sich dann die Struktur über entsprechende Befehle wie keys() an.

pprint.pprint kent ein depth-Argument und IPython.lib.pretty.pprint sogar ein max_seq_length um Listen abzukürzen.
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@Jyll,
Ja, das Einlesen klappt schon ganz gut mit dem json-Modul
Dann hast du es ja schonmal geschafft, die Daten in einen Dictionary zu laden.
Jetzt geht es also darum aus der entsprechenden Verschachtelungstiefe die Liste heraus zu holen.

Ein generisches Beispiel mit einem Dictionary "data":

Code: Alles auswählen

data = {
    "Key1": {"VerschachtelterKey1": {"VerschachtelterKey2": [1, 2, 3, 4]}},
    "Key2": {"VerschachtelterKey1": {"VerschachtelterKey2": [1, 2, 3, 4]}},
    "Key3": {"VerschachtelterKey1": {"VerschachtelterKey2": [1, 2, 3, 4]}},
    "Key4": {"VerschachtelterKey1": {"VerschachtelterKey2": [1, 2, 3, 4]}},
}
list_data = data["Key1"]["VerschachtelterKey1"]["VerschachtelterKey2"]
Was man jetzt im einzelnen bei dir machen muss, hängt natürlich von der Struktur deiner Daten ab.
Da müsstest du dich vielleicht noch etwas einlesen:
https://docs.python.org/3/tutorial/data ... ctionaries

Da steht auch etwas zu Iterationen über Unterelemente des Dictionaries, falls du das brauchst.

Um erstmal die erste Ebene der Keys auszugeben kannst du auch so etwas tun:

Code: Alles auswählen

for key in data:
    print(key)
    
"""
Ausgabe:
Key1
Key2
Key3
Key4
"""
Jyll
User
Beiträge: 26
Registriert: Montag 26. Juli 2021, 14:18

Hi @rogerb, @sirius und @sparrow, ich danke Euch sehr. Ihr habt mir jetzt schon mal erheblich weiter geholfen.
@rogerb: genau das, was Du schreibst, hatte ich exakt gesucht und genau, diese "Dictionary" ist noch für mich ein bömisches Dorf gewesen. Schön, dass Du mir die Seite genannt hast. Ich denke, jetzt komme ich weiter. Einen schönen Tag und Danke.
Viele Grüße Jyll
Antworten