Maison >développement back-end >Golang >Comment puis-je parcourir efficacement les structures JSON imbriquées dans Go ?

Comment puis-je parcourir efficacement les structures JSON imbriquées dans Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-28 18:31:11679parcourir

How Can I Efficiently Iterate Over Nested JSON Structures in Go?

Boucle à travers les structures JSON imbriquées dans Go

Cette question explore comment parcourir efficacement les structures JSON imbriquées dans Go. Considérez l'exemple JSON fourni dans la question. L'objectif est d'extraire toutes les paires clé-valeur de cette structure JSON complexe.

En utilisant une combinaison de commutation de type et de récursivité, une fonction personnalisée peut être implémentée pour analyser une carte de clés de chaîne pour interfacer les valeurs :

func parseMap(aMap map[string]interface{}) {
    for key, val := range aMap {
        switch concreteVal := val.(type) {
        case map[string]interface{}:
            fmt.Println(key)
            parseMap(val.(map[string]interface{}))
        case []interface{}:
            fmt.Println(key)
            parseArray(val.([]interface{}))
        default:
            fmt.Println(key, ":", concreteVal)
        }
    }
}

De même, un tableau de valeurs d'interface peut être analysé de manière récursive :

func parseArray(anArray []interface{}) {
    for i, val := range anArray {
        switch concreteVal := val.(type) {
        case map[string]interface{}:
            fmt.Println("Index:", i)
            parseMap(val.(map[string]interface{}))
        case []interface{}:
            fmt.Println("Index:", i)
            parseArray(val.([]interface{}))
        default:
            fmt.Println("Index", i, ":", concreteVal)
        }
    }
}

En appelant ces fonctions de manière récursive, la structure JSON peut être itérée, extrayant toutes les paires clé-valeur dans le format souhaité.

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!

Déclaration:
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