Gestion des types de champs JSON dynamiques dans Go
Lorsque je défonce JSON dans une structure, on peut rencontrer des incohérences dans le type de valeur d'une clé spécifique à travers les demandes d'API. Ce défi se présente lorsque le serveur envoie différentes structures d'objets 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 non-remise.
pour résoudre ce problème, une approche de type dynamique 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 JSON avec des valeurs de chaîne est rencontrée, comme:
{ "mykey": [ "/obj1/is/at/this/path", "/obj2/is/at/this/other/path" ] }
Les éléments Mykey Slice seront décodés sous forme de chaînes. Pour les objets, ils seront décodés en tant que valeurs d'interface MAP [String] {}. 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émadiant le JSON en un type d'interface et en utilisant des commutateurs de type, les développeurs GO peuvent gérer les types de champ dynamiques et analyser les données de manière appropriée, quelle que soit la structure fournie par le serveur.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3