Eine Webdienstanfrage an Microsoft Translator ergab einen Fehler beim Versuch, die JSON-Ausgabe mit json.Unmarshal zu entmarshalieren. Der konkret aufgetretene Fehler war „Ungültiges Zeichen ‚ï‘ sucht nach Wertanfang.“
Bei der Prüfung der JSON-Antwort als Zeichenfolge wurde deutlich, dass die Daten gültig schienen . Beim Vergleich der Byte-Arrays der Antwort und einer manuell gemarshallten Version der erwarteten Daten wurde jedoch eine Diskrepanz festgestellt.
Die Diskrepanz wurde auf das Vorhandensein einer Byte Order Mark zurückgeführt (BOM) in der Antwort. Eine Stückliste ist ein Sonderzeichen, das die Kodierung einer Textdatei identifiziert, in diesem Fall UTF-8.
Die Stückliste muss vor der Dekodierung der JSON-Antwort entfernt werden. Dies kann mit der folgenden Codezeile erreicht werden:
body = bytes.TrimPrefix(body, []byte("\xef\xbb\xbf")) // Or []byte{239, 187, 191}
Die Funktion bytes.TrimPrefix entfernt das BOM vom Anfang des Body-Byte-Arrays und ermöglicht so das nachfolgende json.Unmarshal Der Vorgang kann fortgesetzt werden, ohne dass der Fehler „Ungültiges Zeichen“ auftritt.
Der Fehler „Ungültiges Zeichen“. „ï“ sucht nach dem Anfang des Werts“ während json.Unmarshal kann durch eine Stückliste in der JSON-Antwort verursacht werden. Durch das Entfernen der Stückliste mit der Funktion bytes.TrimPrefix wird das Problem behoben und die Daten können erfolgreich entmarshaled werden.
Das obige ist der detaillierte Inhalt vonWie behebt man den Fehler „Ungültiges Zeichen \'ï\' sucht nach Wertanfang' in JSON Unmarshal?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!