Maison >développement back-end >Golang >Comment désorganiser les structures JSON dynamiques avec des touches de type dans Go ?
Désagrégation des structures JSON dynamiques avec clé de type
Dans les situations où les documents JSON contiennent des structures hétérogènes avec des champs typés dynamiquement, il devient nécessaire de concevoir un stratégie pour un désagrégation efficace dans les structures Go. Une exigence courante consiste à regrouper les documents JSON dans une structure sans introduire de champs génériques supplémentaires comme espaces réservés pour les champs variantes.
Pour y parvenir, une approche consiste à créer une interface qui représente les propriétés communes entre les champs variantes. Dans ce cas, une interface Something avec une méthode GetType() peut être définie. De plus, plusieurs structures et fonctions peuvent être construites pour prendre en charge différents types de champs dynamiques avec des propriétés différentes, telles que DynamicTypeA et DynamicTypeB.
L'étape suivante consiste à implémenter un json.Unmarshaler pour le type BigStruct. Cette méthode de démarshaling personnalisée peut inspecter le champ Type dans l'objet JSON Dynamic_field et déterminer dynamiquement le type du champ DynamicField. Par exemple, si le champ Type est « A », le champ DynamicField doit être défini sur une instance de DynamicTypeA. Cela permet une sélection du type d'exécution basée sur la structure JSON.
Une approche alternative, si le type du DynamicField ne peut pas être modifié, consiste à implémenter la méthode UnmarshalJSON sur le type BigStruct et à déclarer un type temporaire pour éviter la récursion. . Ce type temporaire sert d'intermédiaire pour le processus de démarshaling, empêchant une récursivité infinie.
En adoptant ces techniques, il est possible de désassembler efficacement les structures JSON dynamiques en structures Go, permettant la gestion et la manipulation flexibles de types de champs variables. .
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!