Une demande de service Web adressée à Microsoft Translator a généré une erreur lors de la tentative de démarshalage de la sortie JSON à l'aide de json.Unmarshal. L'erreur spécifique rencontrée était "caractère 'ï' invalide recherchant le début de la valeur."
Lors de l'inspection de la réponse JSON sous forme de chaîne, il est devenu évident que les données semblaient valides. . Cependant, la comparaison des tableaux d'octets de la réponse et d'une version marshalée manuellement des données attendues a révélé une divergence.
La divergence a été attribuée à la présence d'une marque d'ordre d'octets. (BOM) dans la réponse. Une nomenclature est un caractère spécial qui identifie l'encodage d'un fichier texte, dans ce cas, UTF-8.
La nomenclature doit être supprimée avant de décoder la réponse JSON. Ceci peut être réalisé en utilisant la ligne de code suivante :
body = bytes.TrimPrefix(body, []byte("\xef\xbb\xbf")) // Or []byte{239, 187, 191}
La fonction bytes.TrimPrefix supprime la nomenclature du début du tableau d'octets du corps, permettant le json.Unmarshal suivant opération pour continuer sans rencontrer l'erreur de caractère invalide.
L'erreur "caractère invalide 'ï' recherche du début de la valeur" pendant json.Unmarshal peut être provoqué par une nomenclature dans la réponse JSON. La suppression de la nomenclature à l'aide de la fonction bytes.TrimPrefix résout le problème et permet aux données d'être désorganisées avec succès.
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!