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

Mary-Kate Olsen
Freigeben: 2024-11-01 17:23:02
Original
185 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!