Maison > développement back-end > Golang > le corps du texte

Comment gérer les tableaux imbriqués dans le démarshalling Go JSON ?

Patricia Arquette
Libérer: 2024-11-05 16:10:03
original
1014 Les gens l'ont consulté

How to Handle Nested Arrays in Go JSON Unmarshalling?

Golang JSON : gestion des tableaux imbriqués avec unmarshalling

Dans Go, lorsque vous travaillez avec des tableaux JSON imbriqués après unmarshalling, il est crucial de comprendre l'erreur "le type interface {} ne prend pas en charge l'indexation." Cette erreur se produit lorsque vous tentez d'accéder à un élément dans un tableau JSON stocké dans une variable interface{}.

Pour résoudre ce problème, vous devrez utiliser des assertions de type pour convertir la variable interface{} en type de tableau sous-jacent.

Interface{} Représentation dans le module JSON

Le module JSON représente les tableaux sous forme de tranches []interface{} et de dictionnaires sous forme de map[string]interface{ } mappe lors du décodage en une variable d'interface {}.

Accès aux éléments imbriqués avec des assertions de type

Sans vérification des erreurs, vous pouvez parcourir le tableau JSON à l'aide des assertions de type comme suit :

<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, il est important de noter que ces assertions de type peuvent paniquer si les types ne correspondent pas. Pour éviter ce problème, vous pouvez utiliser le formulaire à deux retours et vérifier l'erreur :

<code class="go">objects, ok := result["objects"].([]interface{})
if !ok {
    // Handle error here
}</code>
Copier après la connexion

Décodage en structure pour un accès amélioré

Si le JSON les données suivent un format cohérent, une solution plus efficace consiste à les décoder en un type structuré. Par exemple, sur la base des données fournies :

<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

En décodant dans cette structure, vous pouvez accéder directement à l'ID de l'élément en utilisant result.Objects[0].ItemId. Cette approche élimine le besoin d'assertions de type et fournit une méthode sécurisée pour accéder aux éléments imbriqués.

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