Maison > Article > développement back-end > Comment accéder en toute sécurité aux tableaux JSON imbriqués dans Go ?
Lorsque vous travaillez avec des réponses JSON dans Go, l'accès aux éléments dans des tableaux imbriqués peut poser des problèmes. Souvent, des erreurs surviennent telles que "type interface {} ne prend pas en charge l'indexation" lors de la tentative de récupération de points de données spécifiques.
Pour résoudre ce problème, il est crucial de comprendre la nature sous-jacente des réponses JSON dans Go. Par défaut, les tableaux sont représentés sous forme de tranches []interface{}, tandis que les dictionnaires sont convertis en cartes map[string]interface{}. Par conséquent, les variables d'interface ne prennent pas en charge l'indexation.
Pour accéder aux éléments imbriqués, des assertions de type deviennent nécessaires. Une approche consiste à effectuer les opérations suivantes sans vérification d'erreur :
<code class="go">objects := result["objects"].([]interface{}) first := objects[0].(map[string]interface{}) fmt.Println(first["ITEM_ID"])</code>
Cependant, cette méthode peut conduire à des paniques si les types ne s'alignent pas. Une approche plus robuste consiste à utiliser le formulaire à deux retours et à gérer les erreurs potentielles :
<code class="go">objects, ok := result["objects"].([]interface{}) if !ok { // Handle error }</code>
Si votre JSON suit une structure cohérente, envisagez de le décoder directement dans un type personnalisé :
<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>
Une fois décodé, vous pouvez accéder de manière transparente aux éléments imbriqués comme result.Objects[0].ItemId.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!