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>
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>
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>
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!