Maison > développement back-end > Golang > le corps du texte

Comment puis-je gérer les valeurs booléennes ambiguës (0/1, vrai/faux) lors de la désorganisation de JSON ?

Susan Sarandon
Libérer: 2024-11-26 22:06:15
original
611 Les gens l'ont consulté

How Can I Handle Ambiguous Boolean Values (0/1, true/false) When Unmarshalling JSON?

Gestion des valeurs booléennes ambiguës dans JSON avec Unmarshalling

Lors du mappage de la sortie d'un service qui représente de manière incohérente les valeurs booléennes comme 0 et faux (ou 1 et vrai), il devient nécessaire d’adopter une approche plus permissive lors du démarchage. Bien que l'ajout d'une chaîne aux balises JSON puisse ne pas suffire, il existe des solutions alternatives disponibles.

Implémentation d'un type personnalisé

Une solution consiste à définir un type personnalisé, tel que ConvertibleBoolean, pour gérer les valeurs booléennes. Ce type inclut une méthode UnmarshalJSON qui convertit les données d'entrée en une valeur booléenne basée sur les conventions spécifiées.

type ConvertibleBoolean bool

func (bit *ConvertibleBoolean) UnmarshalJSON(data []byte) error {
    asString := string(data)
    if asString == "1" || asString == "true" {
        *bit = true
    } else if asString == "0" || asString == "false" {
        *bit = false
    } else {
        return errors.New(fmt.Sprintf("Boolean unmarshal error: invalid input %s", asString))
    }
    return nil
}
Copier après la connexion

Ce type personnalisé garantit que les valeurs d'entrée telles que "1" et "0" sont interprétées comme des valeurs booléennes. , permettant une analyse sans erreurs.

Récepteur de méthode de pointeur

Il est important de noter que pour que la coutume Méthode UnmarshalJSON pour fonctionner correctement, elle doit être implémentée en tant que récepteur de méthode pointeur. En effet, les pointeurs permettent de modifier la valeur sous-jacente.

En utilisant cette approche, vous pouvez efficacement distinguer les valeurs booléennes ambiguës des données JSON, en garantissant que la structure résultante contient les valeurs attendues malgré les incohérences dans les données d'entrée. .

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal