Wie gehe ich mit verschachtelten Arrays beim Go JSON Unmarshalling um?

Patricia Arquette
Freigeben: 2024-11-05 16:10:03
Original
1014 Leute haben es durchsucht

How to Handle Nested Arrays in Go JSON Unmarshalling?

Golang JSON: Umgang mit verschachtelten Arrays mit Unmarshalling

Wenn Sie in Go nach dem Unmarshalling mit verschachtelten JSON-Arrays arbeiten, ist es wichtig, den Fehler zu verstehen „Typschnittstelle {} unterstützt keine Indizierung.“ Dieser Fehler tritt auf, wenn Sie versuchen, auf ein Element in einem JSON-Array zuzugreifen, das in einer Interface{}-Variablen gespeichert ist.

Um dieses Problem zu beheben, müssen Sie Typzusicherungen verwenden, um die Interface{}-Variable in die zu konvertieren zugrunde liegender Array-Typ.

Interface{}-Darstellung im JSON-Modul

Das JSON-Modul stellt Arrays dar als []interface{}-Slices und Wörterbücher als Map[string]interface{}-Zuordnungen beim Decodieren in eine Interface{}-Variable.

Zugriff auf verschachtelte Elemente mit Typzusicherungen

Ohne Fehlerprüfung können Sie mithilfe von Typzusicherungen wie folgt im JSON-Array navigieren:

<code class="go">objects := result["objects"].([]interface{})
first := objects[0].(map[string]interface{})
fmt.Println(first["ITEM_ID"])</code>
Nach dem Login kopieren

Es ist jedoch wichtig zu beachten dass diese Typzusicherungen in Panik geraten können, wenn die Typen nicht übereinstimmen. Um dieses Problem zu vermeiden, können Sie das Zwei-Rückgabe-Formular verwenden und auf den Fehler prüfen:

<code class="go">objects, ok := result["objects"].([]interface{})
if !ok {
    // Handle error here
}</code>
Nach dem Login kopieren

Dekodierung in eine Struktur für verbesserten Zugriff

Wenn der JSON Da die Daten einem konsistenten Format folgen, besteht eine effizientere Lösung darin, sie in einen strukturierten Typ zu dekodieren. Beispielsweise basierend auf den bereitgestellten Daten:

<code class="go">type Result struct {
    Query   string `json:"query"`
    Count   int    `json:"count"`
    Objects []struct {
        ItemId      string `json:"ITEM_ID"`
        ProdClassId string `json:"PROD_CLASS_ID"`
        Available   int    `json:"AVAILABLE"`
    } `json:"objects"`
}</code>
Nach dem Login kopieren

Durch die Dekodierung in diese Struktur können Sie direkt auf die Artikel-ID zugreifen, indem Sie result.Objects[0].ItemId verwenden. Dieser Ansatz macht Typzusicherungen überflüssig und bietet eine typsichere Methode für den Zugriff auf verschachtelte Elemente.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit verschachtelten Arrays beim Go JSON Unmarshalling um?. 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