Lors de l'utilisation de JSON, il peut y avoir des situations dans lesquelles une gestion sensible à la casse est souhaitée pendant le processus de démarshalage. Cependant, la bibliothèque JSON standard de Go donne la priorité aux correspondances insensibles à la casse, ce qui peut entraîner un comportement inattendu.
Selon la documentation officielle, lors du démarshalage, les clés JSON entrantes sont par rapport aux noms de champs de structure ou aux balises. La bibliothèque préfère les correspondances exactes mais tolère également les correspondances insensibles à la casse. Cela peut entraîner des conflits si, par exemple, vous recevez du JSON contenant des clés telles que « e » et « E » et souhaitez annuler le marshaling uniquement la variante « e ».
Malheureusement, la bibliothèque JSON standard n'offre actuellement pas de mécanisme simple pour désactiver la désorganisation insensible à la casse. La documentation sur https://golang.org/pkg/encoding/json/#Unmarshal indique explicitement :
"Unmarshal fait correspondre les clés d'objet entrantes aux clés utilisées par Marshal (soit le nom du champ de structure, soit sa balise) , préférant une correspondance exacte mais acceptant également une correspondance insensible à la casse."
Étant donné que la bibliothèque standard ne fournit pas de solution prête à l'emploi, une solution de contournement possible consiste à créer un décodeur JSON personnalisé en étendant le package encoding/json. Ce décodeur pourrait implémenter un mécanisme de désorganisation sensible à la casse au niveau du champ qui ignore les balises avec une casse différente.
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!