JSON response mit Python richtig auswerten?
Guten Tag zusammen,
nach langem fuckeln und ausprobieren habe ich es nun endlich geschafft, eine funktionierende JSON Anfrage zu schicken und bekomme auch eine brauchbare Antwort zurück. Problem ist nur, dass die Antwort welche ich bekomme, 250 Zeilen hat. Mich interessieren allerdings immer nur die ersten 16. Ich programmiere in Python.
Bisher sieht es so aus, was ich mir zusammengebaut habe
response = requests.post(api_url, …….)
test = response.text
anzahlZeilen = test.count
print(test)
print(anzahlZeilen)
Wie kann ich mir also nur diese 16 Zeilen Printen?
Danke im Voraus!
Kannst du uns vielleicht ein Beispiel einer Response geben?
2022-09-05_34_kryptischertextderimmerunterschiedlichlautet
oder kannst du mir einen Tipp geben, wie ich mir das ergooglen könnte?
ist es dann
2022-09-05_kryptischderimmerunterschiedlichist
2022-09-06_kryptischderimmerunterschiedlichist
2022-09-07_kryptischderimmerunterschiedlichist
oder wie ist es aufgebaut?
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))
Danke! Es funktioniert jetzt. Du hast mir gut weitergeholfen!