Heim  >  Artikel  >  Backend-Entwicklung  >  Wie greife ich in Golang auf verschachtelte JSON-Daten zu und behebe den Fehler „Typschnittstelle {} unterstützt keine Indexierung“?

Wie greife ich in Golang auf verschachtelte JSON-Daten zu und behebe den Fehler „Typschnittstelle {} unterstützt keine Indexierung“?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-27 02:18:30446Durchsuche

How do I access nested JSON data in Golang and resolve the

Zugriff auf verschachtelte JSON-Daten in Golang: Behebung des Fehlers „Typschnittstelle {} unterstützt keine Indizierung“

Beim Arbeiten 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.

Zu 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:

Typ Assertion zu einer Zwischenkarte

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:

<code class="go">test := d.(map[string]interface{})["data"].(map[string]interface{})["type"]</code>

Jetzt speichert test den Wert des Felds „type“ in der verschachtelten Datenzuordnung.

Optionale Typzusicherung auf d

Wenn Sie d von Anfang an als Map[string]interface{} deklarieren, können Sie die erste Typzusicherung überspringen:

<code class="go">var d map[string]interface{}
...
test := d["data"].(map[string]interface{})["type"]</code>

Dadurch wird d direkt in den richtigen Kartentyp umgewandelt, sodass keine Zwischentypzusicherung erforderlich ist.

Schlussfolgerung

Durch das Verständnis der Daten Wenn Sie Typen verwenden und die entsprechenden Typzusicherungen ausführen, können Sie in Golang auf verschachtelte JSON-Antworten zugreifen und damit arbeiten, ohne dass es zu Indizierungsfehlern kommt. 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.

Das obige ist der detaillierte Inhalt vonWie greife ich in Golang auf verschachtelte JSON-Daten zu und behebe den Fehler „Typschnittstelle {} unterstützt keine Indexierung“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn