Maison >développement back-end >Golang >Comment puis-je gérer les champs JSON incohérents (chaînes ou tableaux) dans Go ?
Désorganisation de JSON avec des champs incohérents : gestion des chaînes et des tableaux
Lors de la désorganisation de données JSON dans une structure Go, il peut être difficile de gérer les champs dont le type peut varier. Par exemple, un champ peut être une chaîne dans la plupart des cas, mais parfois un tableau de chaînes. Pour résoudre ce problème, nous présentons une solution qui exploite les puissantes capacités d'analyse JSON de Go.
Capturer le champ variable avec json.RawMessage
La clé pour gérer les champs JSON incohérents consiste à capturer les données brutes à l'aide de json.RawMessage. Ce type est une tranche d'octets qui stocke la valeur JSON non analysée. En stockant les données brutes, nous avons la possibilité de les analyser ultérieurement en fonction de leur type spécifique.
Masquer le champ DisplayName et le remplir après le décodage
Pour éviter Pour empêcher le décodeur de tenter d'interpréter le champ DisplayName avant d'avoir les données pertinentes, nous le masquons en utilisant le nom JSON "-". Ce nom indique au décodeur d'ignorer le champ lors de la désorganisation initiale. Une fois le JSON de niveau supérieur décodé, nous remplissons manuellement le champ DisplayName en fonction des données brutes analysées.
Gestion des différents types de données brutes
En fonction de que la donnée brute soit une chaîne ou un tableau de chaînes, on procède comme suit :
Intégrer dans une boucle pour MyListings
Pour gérer une liste d'éléments, tels que MyListings, nous pouvons parcourir chaque élément et exécuter la même logique de démarchage que celle décrite ci-dessus. Cela nous permet de gérer toute incohérence dans le champ DisplayName pour chaque élément.
Encapsuler la logique avec un Unmarshaler personnalisé
Si plusieurs champs du modèle de données peuvent avoir des incohérences types, il peut être avantageux d’encapsuler la logique dans un type personnalisé qui implémente l’interface json.Unmarshaler. Cela simplifie le processus et réduit la duplication.
En conclusion, en utilisant json.RawMessage et en masquant les champs variables, nous pouvons efficacement dissocier les données JSON avec des champs incohérents, garantissant ainsi que toutes les données nécessaires sont capturées et analysées correctement. Les exemples fournis et les liens vers des terrains de jeux démontrent la solution en pratique.
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!