Einlesen einer hierarchischen JSON-Struktur

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
caiusjuliuscaesar
User
Beiträge: 7
Registriert: Sonntag 3. September 2017, 12:00

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.
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

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"])
Antworten