/ / Verschachtelte Objektstruktur im JSON-Format - Python, JSON

Verschachtelte Objektstruktur im JSON-Format - Python, JSON

Die JSON-Struktur

{
"categories": [{
"supercategory": "Bottle",
"id": 1,
"name": "Bottle"
},
{
"supercategory": "Car",
"id": 2,
"name": "Car"
}]
}

Wird vom folgenden Python-Skript gelesen:

with open("file.json") as json_data:
json_info = json.load(json_data)

Zu einem späteren Zeitpunkt versucht dasselbe Skript, auf die Datenstruktur wie folgt zuzugreifen:

json_info["1"]["name"]
json_info["2"]["name"]

Wo sich die Zahlen auf das Feld "id" in derJSON-Struktur. Da dieser Code offensichtlich nicht mit der JSON-Struktur übereinstimmt: Wie muss ich die JSON-Struktur ändern, damit dies funktioniert? (Vorausgesetzt, ich kann das Skript nicht ändern).

Antworten:

6 für die Antwort № 1

Damit Ihr Code funktioniert, benötigen Sie Folgendes:

json_info = {
"1": {"supercategory": "Bottle",
"name": "Bottle"},
"2": {"supercategory": "Car",
"name": "Car"}
}

3 für die Antwort № 2

Ich denke, was Sie suchen, ist etwa so:

{
"1": {
"supercategory": "Bottle",
"id": 1,
"name": "Bottle"
},
"2": {
"supercategory": "Car",
"id": 2,
"name": "Car"
}
}

0 für die Antwort № 3

Vorsichtige, würde ich sehr empfehlen, die "bekommen"Methode beim Zugriff auf ein Wörterbuch in Python. Sie behandelt implizit Fälle, in denen die angegebenen Schlüssel nicht gültig sind, und verhindert Fehler, indem sie null (oder einen Standardwert) zurückgibt. Sieh dir das an Verknüpfung Für mehr Information. Also würde der Code als neu geschrieben werden json_info.get("1",{}).get("name"). Notieren Sie das leere Standardwörterbuch in dem erstenbekommen - das ist, um keine Fehlertypen zu vermeiden. Zweitens, wenn Sie tatsächlich auf Objekte mit ihrer ID STRING (und nicht auf int) zugreifen möchten, wäre Ihre JSON-Datenstruktur wie folgt:

{
"1": {
"supercategory": "Bottle",
"name": "Bottle"
},
"2": {
"supercategory": "Car",
"name": "Car"
}
}