Maison  >  Article  >  développement back-end  >  Comment réaliser un démarshaling JSON sensible à la casse dans Go ?

Comment réaliser un démarshaling JSON sensible à la casse dans Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-10 01:27:02342parcourir

How to Achieve Case-Sensitive JSON Unmarshaling in Go?

Gestion du démarshalage JSON sensible à la casse

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.

Comportement de correspondance insensible à la casse

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 ».

Manque de démarshalling sensible à la casse

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."

Solutions alternatives

É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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn