Maison > développement back-end > Golang > Comment analyser efficacement le JSON imbriqué dans GoLang à l'aide de l'assertion de type ?

Comment analyser efficacement le JSON imbriqué dans GoLang à l'aide de l'assertion de type ?

Patricia Arquette
Libérer: 2024-11-26 08:06:12
original
502 Les gens l'ont consulté

How to Efficiently Parse Nested JSON in GoLang Using Type Assertion?

Bouclage sur JSON imbriqué dans GoLang

Il existe une exigence pour extraire des paires clé-valeur d'une structure JSON imbriquée pour un traitement dynamique. Pour parcourir efficacement cette structure, l'approche suivante est recommandée :

Utilisation de l'assertion de type avec une boucle de plage

Comme indiqué dans la réponse, une assertion de type peut être utilisée de manière itérative accéder et traiter le contenu des objets JSON imbriqués. L'exemple de code suivant illustre cette approche :

package main

import (
    "encoding/json"
    "fmt"    
)

func main() {
    // Create a map for the JSON data
    m := map[string]interface{}{}
    
    // Unmarshal the JSON input into the map
    err := json.Unmarshal([]byte(input), &m)
    if err != nil {
        panic(err)
    }

    // Recursively parse the map
    parseMap(m)
}

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

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

const input = `
{
    "outterJSON": {
        "innerJSON1": {
            "value1": 10,
            "value2": 22,
            "InnerInnerArray": [ "test1" , "test2"],
            "InnerInnerJSONArray": [{"fld1" : "val1"} , {"fld2" : "val2"}]
        },
        "InnerJSON2":"NoneValue"
    }
}
`
Copier après la connexion

Dans ce code, les fonctions parseMap et parseArray parcourent de manière récursive la structure JSON imbriquée, en imprimant les paires clé-valeur de manière hiérarchique. Cette approche fournit un mécanisme polyvalent pour accéder et traiter les données de JSON quelle que soit leur complexité.

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