Maison >développement back-end >Golang >Comment puis-je désorganiser un tableau JSON avec des types de données mixtes dans Go ?
Désorganisation d'un tableau de types divers
Dans la gestion JSON, la désorganisation de tableaux avec des types d'éléments variés peut être difficile. Cet article aborde le problème de la désorganisation des tableaux composés d'éléments avec des types de données connus mais non triés.
Méthode de Go pour le décodage arbitraire des données
Comme indiqué dans la documentation officielle de Go sur JSON encodage, il est possible de décoder des données arbitraires dans une interface{} à l'aide de la fonction json.Unmarshal. En utilisant l'assertion de type, le type de données peut être déterminé dynamiquement.
Adaptation de votre code
La version modifiée suivante de votre code présente cette approche :
package main import ( "encoding/json" "fmt" ) var my_json string = `{ "an_array":[ "with_a string", { "and":"some_more", "different":["nested", "types"] } ] }` func IdentifyDataTypes(f interface{}) { switch vf := f.(type) { case map[string]interface{}: fmt.Println("is a map:") for k, v := range vf { switch vv := v.(type) { case string: fmt.Printf("%v: is string - %q\n", k, vv) case int: fmt.Printf("%v: is int - %q\n", k, vv) default: fmt.Printf("%v: ", k) IdentifyDataTypes(v) } } case []interface{}: fmt.Println("is an array:") for k, v := range vf { switch vv := v.(type) { case string: fmt.Printf("%v: is string - %q\n", k, vv) case int: fmt.Printf("%v: is int - %q\n", k, vv) default: fmt.Printf("%v: ", k) IdentifyDataTypes(v) } } } } func main() { fmt.Println("JSON:\n", my_json, "\n") var f interface{} err := json.Unmarshal([]byte(my_json), &f) if err != nil { fmt.Println(err) } else { fmt.Printf("JSON: ") IdentifyDataTypes(f) } }
Sortie
Le code produit ce qui suit sortie :
JSON: { "an_array":[ "with_a string", { "and":"some_more", "different":["nested", "types"] } ] } JSON: is a map: an_array: is an array: 0: is string - "with_a string" 1: is a map: and: is string - "some_more" different: is an array: 0: is string - "nested" 1: is string - "types"
Cette approche permet une identification et une gestion dynamiques des types d'éléments au sein du tableau, offrant une solution polyvalente pour vos besoins de désorganisation.
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!