JSON response mit Python richtig auswerten?

Hanibal545  05.09.2022, 19:41

Kannst du uns vielleicht ein Beispiel einer Response geben?

stepqiri 
Fragesteller
 05.09.2022, 19:57

2022-09-05_34_kryptischertextderimmerunterschiedlichlautet

oder kannst du mir einen Tipp geben, wie ich mir das ergooglen könnte?

Hanibal545  05.09.2022, 19:59

ist es dann

2022-09-05_kryptischderimmerunterschiedlichist
2022-09-06_kryptischderimmerunterschiedlichist
2022-09-07_kryptischderimmerunterschiedlichist

oder wie ist es aufgebaut?

stepqiri 
Fragesteller
 06.09.2022, 08:39

Ja genau- und das steht dann da in 250 Zeilen. In jeder Zeile ist nur das Datumsformat identisch. Alles andere ist willkürlich.

1 Antwort

Wenn du Zeile 17 bis 250 wegwirfst, ist es kein gültiges JSON mehr. Es wird mindestens die schließende } am Ende fehlen.

Du solltest das JSON in Python serialisieren und im Anschluss die relevanten Parameter herausziehen.

import json

response = requests.post(api_url, …….)
jsonDict = json.loads(response.text) 

Jetzt hast du den JSON String als Python Dictionary Objekt (jsonDict im Beispiel).

Hier hast du eine Tabelle wie JSON und Python Datentypen überführt werden.

Falls du die ersten 16 Zeilen einfach ausgeben möchtest, könnte es vielleicht auch nicht funktionieren. Die meisten APIs geben den JSON String in einer Zeile zurück. Leerzeichen und Zeilenumbrüche sind Daten, die nicht zwingend nötig sind. Daher werden sie weggelassen.

Für den folgenden Abschnitt gehe ich davon aus, dass du das JSON bereits mit Zeilenumbrüchen erhälst.

Python bietet bei Strings die split Funktion an. Damit kannst du den String bei bestimmten Zeichen auftrennen. Als Resultat bekommst du ein Array. Der Zeilenumbruch wird mit hoher Wahrscheinlichkeit durch \n dargestellt.

zeilenArray = response.text.split("\n")
ersten16Zeilen = zeilenArray[:16]

Beim Array aus den Zeilen kannst du du die ersten 16 Zeilen wählen und nutzen.

Für das schöne Anzeigen kannst du wieder die Zeilenumbrüche einfügen.

print("\n".join(ersten16Zeilen))
stepqiri 
Fragesteller
 06.09.2022, 10:16

Danke! Es funktioniert jetzt. Du hast mir gut weitergeholfen!

1