Gestion des types de champs JSON dynamiques dans Go
Lors de la désorganisation de JSON dans Go dans une structure, on peut rencontrer des incohérences dans le type de valeur d'un clé spécifique dans les requêtes API. Ce défi survient lorsque le serveur envoie différentes structures d'objet ou références de chaîne pour la même clé. Cela peut poser un problème car Go nécessite une structure fixe pour le démarshaling.
Pour résoudre ce problème, une approche dynamique de type utilisant un type d'interface peut être utilisée. Considérez les données JSON suivantes :
{ "mykey": [ {obj1}, {obj2} ] }
Pour capturer cette nature dynamique, nous pouvons définir une structure comme suit :
type Data struct { MyKey []interface{} `json:"mykey"` }
Lorsque du JSON avec des valeurs de chaîne est rencontré, tel que :
{ "mykey": [ "/obj1/is/at/this/path", "/obj2/is/at/this/other/path" ] }
Les éléments de tranche MyKey seront décodés sous forme de chaînes. Pour les objets, ils seront décodés sous forme de valeurs map[string]interface{}. Cette distinction peut être faite à l'aide d'un commutateur de type :
for i, v := range data.MyKey { switch x := v.(type) { case string: fmt.Println("Got a string: ", x) case map[string]interface{}: fmt.Printf("Got an object: %#v\n", x) } }
En désorganisant le JSON en un type d'interface et en utilisant des commutateurs de type, les développeurs Go peuvent gérer les types de champs dynamiques et analyser les données de manière appropriée, quelle que soit la structure fournie. par le serveur.
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!