Maison >développement back-end >Golang >Comment puis-je extraire des valeurs booléennes flexibles (0/1 et vrai/faux) de JSON dans Go ?

Comment puis-je extraire des valeurs booléennes flexibles (0/1 et vrai/faux) de JSON dans Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-04 17:42:12634parcourir

How Can I Unmarshal Flexible Boolean Values (0/1 and true/false) from JSON in Go?

Désorganisation JSON des valeurs booléennes flexibles

Lorsque vous traitez des sources de données JSON qui représentent de manière incohérente les valeurs booléennes comme 0/1 et faux/vrai , le package encoding/json standard peut ne pas offrir suffisamment de flexibilité pour l'analyse. Pour résoudre ce problème, nous pouvons implémenter une méthode UnmarshalJSON personnalisée pour étendre les formats booléens acceptés.

Dans l'exemple fourni, nous définissons une structure nommée MyType avec deux champs booléens : AsBoolean et AlsoBoolean. L'entrée JSON correspondante contient les valeurs "true" et "1" pour les champs respectifs.

Pour désorganiser à la fois 0 et false en tant que booléens, nous créons un nouveau type ConvertibleBoolean et implémentons sa méthode UnmarshalJSON. Dans la méthode, nous inspectons les données d'entrée sous forme de chaîne et déterminons la valeur booléenne correspondante en fonction des conditions suivantes :

  • Si la chaîne est "1" ou "true", nous définissons la valeur booléenne à true.
  • Si la chaîne est "0" ou "false", nous définissons la valeur booléenne sur false.
  • Toute autre entrée entraîne une erreur avec un message descriptif.

En personnalisant la méthode UnmarshalJSON, nous pouvons étendre le comportement de démarshaling JSON par défaut et prendre en charge les représentations booléennes non standard dans les données JSON d'entrée. Cette approche nous permet de désorganiser l'entrée JSON dans les valeurs booléennes attendues et de remplir la structure MyType en conséquence.

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