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

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

Susan Sarandon
Susan Sarandonoriginal
2024-11-26 22:06:15749parcourir

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
}

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!

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