Heim  >  Artikel  >  Backend-Entwicklung  >  Wie vermeide ich „ungültige Operation: Typschnittstelle {} unterstützt keine Indizierung“-Fehler beim Dekodieren von verschachteltem JSON?

Wie vermeide ich „ungültige Operation: Typschnittstelle {} unterstützt keine Indizierung“-Fehler beim Dekodieren von verschachteltem JSON?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-01 17:23:02175Durchsuche

How to Avoid

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!

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