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" } } `
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!