Maison > développement back-end > Golang > Comment accéder en toute sécurité aux tableaux JSON imbriqués dans Go ?

Comment accéder en toute sécurité aux tableaux JSON imbriqués dans Go ?

Susan Sarandon
Libérer: 2024-11-05 09:05:02
original
805 Les gens l'ont consulté

How to Safely Access Nested JSON Arrays in Go?

Déchiffrement des problèmes d'accès aux tableaux JSON 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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal