Beim Stellen einer Golang-HTTP-Anfrage zur Microsoft Translator-API (https://msdn.microsoft.com/en-us/library/dn876735.aspx) erhalten Sie eine Fehlermeldung, wenn Sie versuchen, die JSON-Antwort zu entmarshalieren:
err = json.Unmarshal(body, &transTransform)
ungültiges Zeichen „ï“ gesucht Anfang des Werts
Obwohl die JSON-Daten gültig erscheinen, wenn sie als Zeichenfolge gedruckt werden, sind Vergleiche zwischen den Antwortdaten und den mit generierten Daten möglich json.Marshal deckt Unstimmigkeiten auf.
Die Serverantwort enthält eine UTF-8-Textzeichenfolge mit einer Byte Order Mark (BOM), die den Text als UTF-8-codiert identifiziert. Diese Stückliste muss jedoch vor der Dekodierung entfernt werden. Verwenden Sie dazu die folgende Zeile:
body = bytes.TrimPrefix(body, []byte("\xef\xbb\xbf")) // Or []byte{239, 187, 191}
Das Zeichen ï, das in der Fehlermeldung erscheint, resultiert aus der Interpretation der UTF-8-Stückliste als ISO-8859- 1 Zeichenfolge.
Durch Entfernen des BOM können die JSON-Daten erfolgreich in die TransformTextResponse-Daten entmarshallt werden Struktur.
Das obige ist der detaillierte Inhalt vonWarum schlägt das Unmarshalling meines Golang-JSON mit „Ungültiges Zeichen \'ï\'\' aus der Microsoft Translator API fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!