Heim > Artikel > Backend-Entwicklung > Wie vermeide ich „ungültige Operation: Typschnittstelle {} unterstützt keine Indizierung“-Fehler beim Dekodieren von verschachteltem JSON?
Verschachteltes JSON dekodieren und Probleme mit Typzusicherungen behandeln
Beim Abrufen verschachtelter JSON-Daten ist es wichtig, Typzusicherungen angemessen zu behandeln, um Laufzeitfehler zu vermeiden. Ein solcher Fehler ist „Ungültiger Vorgang: Typschnittstelle {} unterstützt keine Indizierung.“
Dieser Fehler tritt normalerweise auf, wenn Sie versuchen, einen Schnittstellenwert {} zu indizieren, als wäre er eine Karte oder ein Slice, wie im Folgendes Beispiel:
<code class="go">var d interface{} json.NewDecoder(response.Body).Decode(&d) test := d["data"].(map[string]interface{})["type"]</code>
Um dieses Problem zu beheben, müssen Sie zusätzliche Typzusicherungen durchführen, um den Wert der Schnittstelle{} in den erwarteten Typ zu konvertieren. In diesem Fall würden Sie zunächst das Interface{} in ein Map[string]Interface{} umwandeln, dann auf das Feld „data“ zugreifen und es in ein anderes Map[string]Interface{} konvertieren, bevor Sie schließlich auf das Feld „Type“ zugreifen.
<code class="go">test := d.(map[string]interface{})["data"].(map[string]interface{})["type"]</code>
Alternativ können Sie d direkt als vom Typ „map[string]interface{}“ deklarieren, wodurch die anfängliche Typzusicherung überflüssig wird:
<code class="go">var d map[string]interface{} json.NewDecoder(response.Body).Decode(&d) test := d["data"].(map[string]interface{})["type"]</code>
Wenn Sie dies häufig tun Für ähnliche Typzusicherungen sollten Sie die Verwendung einer Bibliothek wie github.com/icza/dyno in Betracht ziehen, um den Prozess zu vereinfachen.
Das obige ist der detaillierte Inhalt vonWie vermeide ich „ungültige Operation: Typschnittstelle {} unterstützt keine Indizierung“-Fehler beim Dekodieren von verschachteltem JSON?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!