Seite 1 von 1

Einlesen einer hierarchischen JSON-Struktur

Verfasst: Sonntag 22. Dezember 2019, 14:32
von caiusjuliuscaesar
Hallo,
ich möchte gerne die folgende JSON-Struktur einlesen (hier mit nur 2 "faces", es könnten auch mehr oder nur eines sein):

Code: Alles auswählen

{
	"faces" : [
		{
			"id" : "1",
			"asset_id" : "649",
			"person_id" : "62d9a7c2-8629-4964-afd5-473d081ef7e9",
			"confirmed" : false,
			"gender" : "",
			"region" : {
				"center_x" : 0.654727,
				"center_y" : 0.359394,
				"diameter" : 0.018561
			},
			"data" : "AAA...",
			"quality" : "HIGH",
			"confidence" : 1.008957,
			"found_by" : {
				"name" : "Cognitec FaceVACS-SDK",
				"version" : "9.4.0.0"
			}
		},
		{
			"id" : "2",
			"asset_id" : "649",
			"person_id" : "06d09056-ad21-4d1b-9d71-b2402f1d9203",
			"confirmed" : false,
			"gender" : "",
			"region" : {
				"center_x" : 0.557714,
				"center_y" : 0.372629,
				"diameter" : 0.022181
			},
			"data" : "AAA...",
			"quality" : "HIGH",
			"confidence" : 0.24712,
			"found_by" : {
				"name" : "Cognitec FaceVACS-SDK",
				"version" : "9.4.0.0"
			}
		}
	]
}
Zuerst kommt also eine Art Array mit faces, darunter verbergen sich asset_id, person_id und region. Region selber ist wieder unterstrukturiert mit center_x, center_y und diameter. Die vorgenannten Eigenschaften sind für mit interessant, die restlichen würde ich verwerfen.

Ich habe mir nun folgenden Code ausbaldowert, der allerdings nicht funktioniert. Ich scheitere auch daran, die verschachtelte hierarchische Struktur auszulesen.

Code: Alles auswählen

import json
import glob
path = '../2019-11-01_Alle/FaceAnalysis/json'
filenames = glob.glob(path+"/*.json")

for filename in filenames:
   print(filename)
   with open(filename, 'r') as json_file:    
      json_data = json.load(json_file)
      for f in json_data :
         # funktioniert nicht:
         print(json_data[f]["asset_id"])
Vielleicht hat einer freundlicherweise einen Tipp...

Gruß und danke,

CJC

PS: das ist die Strutur, die Photoshop Elements für die Gesichtserkennung anlegt.

Re: Einlesen einer hierarchischen JSON-Struktur

Verfasst: Sonntag 22. Dezember 2019, 14:45
von Sirius3
Die äußerste Struktur ist keine Liste, sondern ein Wörterbuch mit einen Eintrag: faces.

Code: Alles auswählen

      for face in json_data["faces"]:
         print(face["asset_id"])