Maison > développement back-end > Golang > Pourquoi mon démarshalling Golang JSON échoue-t-il avec \'Caractère invalide \'ï\'\' de l'API Microsoft Translator ?

Pourquoi mon démarshalling Golang JSON échoue-t-il avec \'Caractère invalide \'ï\'\' de l'API Microsoft Translator ?

Barbara Streisand
Libérer: 2024-12-06 20:56:15
original
373 Les gens l'ont consulté

Why Does My Golang JSON Unmarshalling Fail with

Erreur "Caractère 'ï' non valide à la recherche du début de la valeur" lors de la désorganisation de JSON à partir de Microsoft Translator

Problème

Lors d'une requête HTTP Golang à l'API Microsoft Translator (https://msdn.microsoft.com/en-us/library/dn876735.aspx), vous recevez une erreur lorsque vous tentez de désorganiser la réponse JSON :

err = json.Unmarshal(body, &transTransform)
Copier après la connexion
caractère non valide 'ï' recherchant début de la valeur

Bien que les données JSON semblent valides lorsqu'elles sont imprimées sous forme de chaîne, les comparaisons entre les données de réponse et les données générées à l'aide json.Marshal révèle des écarts.

Solution

La réponse du serveur contient une chaîne de texte UTF-8 avec une marque d'ordre d'octet (BOM), qui identifie le texte comme étant codé en UTF-8. Cependant, cette nomenclature doit être supprimée avant le décodage. Pour cela, utilisez la ligne suivante :

body = bytes.TrimPrefix(body, []byte("\xef\xbb\xbf")) // Or []byte{239, 187, 191}
Copier après la connexion

Cause

Le caractère ï, qui apparaît dans le message d'erreur, résulte de l'interprétation de la nomenclature UTF-8 comme une nomenclature ISO-8859- 1 chaîne.

En supprimant la nomenclature, les données JSON peuvent être désorganisées avec succès dans les données TransformTextResponse. structure.

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