Seite 1 von 1

JSON - auf einzelne Felder zugreifen

Verfasst: Donnerstag 18. Februar 2021, 14:42
von torsten_156
Hallo,

ich lese mit "json.loads(myContent)" einen Datenstrom ein. Dieser besteht aus mehreren Feldern.
Ein Beispiel:

Code: Alles auswählen

{\\"werk\\":\\"X\\",\\"bldat\\":\\"X\\",\\"obart\\":\\"X\\",\\"objid\\":\\"X\\"}
Ich kann mir diesen gesamten Inhalt jetzt anzeigen lassen:

Code: Alles auswählen

print(myData["E_JSON"])
Jetzt möchte ich allerdings nur den Wert für "werk" erhalten. In diesem Beispiel ist es ja "X". Wie mache ich das am besten?

Vielen Dank
Torsten

Re: JSON - auf einzelne Felder zugreifen

Verfasst: Donnerstag 18. Februar 2021, 15:09
von Sirius3
Lass erstmal diese unnötigen my-Präfixe weg; solange es nicht auch ein herContent gibt.
Wenn ich das richtig sehe, dann ist in E_JSON ein als String gespeichertes JSON enthalten. Dann mußt Du nur json.loads darauf anwenden.

Re: JSON - auf einzelne Felder zugreifen

Verfasst: Donnerstag 18. Februar 2021, 15:17
von torsten_156
Das siehst du richtig. Habe bereits ein json.loads angewendet:

Code: Alles auswählen

if response.status_code == 200:
    content = response.content
    J_Data = json.loads(content)
    print(J_Data["E_JSON"])
Somit wird ja der JSON-Stream in mein "J_Data" geschoben. Aber wie erhalte ich jetzt den Zugriff auf einen einzelnen Schlüssel?

Re: JSON - auf einzelne Felder zugreifen

Verfasst: Donnerstag 18. Februar 2021, 15:51
von Sirius3
Wenn Du eine requests-Antwort hast, dann benutze direkt json.

Code: Alles auswählen

content = response.json()
und dann hast Du in Deinen Daten nochmal json:

Code: Alles auswählen

data = json.loads(content["E_JSON"])

Re: JSON - auf einzelne Felder zugreifen

Verfasst: Donnerstag 18. Februar 2021, 17:16
von torsten_156
Ok, habe es dann so geändert:

Code: Alles auswählen

if response.status_code == 200:
    content = response.json()
    print(content)
Ok, in content steht nun der JSON-Stream. Aber die Frage bleibt noch immer, wie kann ich euf genau ein Feld des Streams zugreifen?

VG
Torsten

Re: JSON - auf einzelne Felder zugreifen

Verfasst: Donnerstag 18. Februar 2021, 17:29
von Sirius3
Ich kann auch nochmal zum dritten mal das selbe schreiben: Du mußt den String aus content["E_JSON"] nochmal json-Dekodieren.

Re: JSON - auf einzelne Felder zugreifen

Verfasst: Donnerstag 18. Februar 2021, 18:08
von torsten_156
Es läuft:

Code: Alles auswählen

if response.status_code == 200:
    content = response.json()
    data = json.loads(content["E_JSON"])
    
    for val in data:
        print(val['werks'])
VIELEN Dank und Grüße
Torsten