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