Zugriff auf verschachtelte JSON-Daten in Golang: Behebung des Fehlers „Typschnittstelle {} unterstützt keine Indizierung“
Bei der Arbeit mit verschachtelten JSON-Antworten in Golang, es ist wichtig, mit Datentypen richtig umzugehen. Wenn Sie auf den Fehler „Ungültiger Vorgang: d[„Daten“] (Typschnittstelle {} unterstützt keine Indizierung)“ stoßen, tritt dieser normalerweise auf, weil Sie versuchen, eine Schnittstellenvariable {} direkt zu indizieren.
An Um dieses Problem zu beheben, müssen Sie eine weitere Typzusicherung durchführen, um den richtigen Datentyp anzugeben. Lassen Sie uns in die Lösung eintauchen:
Type Assertion to an Intermediate Map
Die Variable d ist vom Typ interface{}, einem dynamischen Typ in Golang. Sie müssen es einem bestimmten Typ zuordnen, um auf seine Felder zugreifen zu können. In diesem Fall wissen wir, dass die Antwort ein „Daten“-Feld enthält, das eine Zuordnung von Zeichenfolgen zu Schnittstellen enthält. Sie können also eine weitere Typzusicherung hinzufügen, um d vor der Indizierung in „map[string]interface{}“ umzuwandeln:
test := d.(map[string]interface{})["data"].(map[string]interface{})["type"]
Test speichert nun den Wert des Felds „type“ in der verschachtelten Datenzuordnung.
Optional Typzusicherung für d
Wenn Sie d von Anfang an als Map[string]interface{} deklarieren, können Sie die erste Typzusicherung überspringen:
var d map[string]interface{}
...
test := d["data"].(map[string]interface{})["type"]
Dadurch wird d direkt in den richtigen Kartentyp umgewandelt, sodass keine Zwischentypzusicherung erforderlich ist.
Fazit
Durch das Verständnis der Datentypen und das Durchführen der entsprechenden Typzusicherungen können Sie auf verschachtelte JSON-Antworten in Golang zugreifen und damit arbeiten, ohne dass Indexierungsfehler auftreten. Denken Sie daran, dass die Schnittstelle{} von Go vielseitig ist, für den Zugriff auf bestimmte Typen jedoch möglicherweise zusätzliche Verarbeitung erforderlich ist.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3