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, les assertions de type deviennent nécessaires. Une approche consiste à effectuer les opérations suivantes sans vérifier les erreurs :
objects := result["objects"].([]interface{})
first := objects[0].(map[string]interface{})
fmt.Println(first["ITEM_ID"])
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 :
objects, ok := result["objects"].([]interface{})
if !ok {
// Handle error
}
Si votre JSON suit une structure cohérente, envisagez de le décoder directement dans un type personnalisé :
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"`
}
Une fois décodé, vous pouvez accéder de manière transparente aux éléments imbriqués comme result.Objects[0].ItemId.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3