json.Unmarshal を使用するときにエラー「値の始まりを探している文字 'ï' が無効です」
から受信した JSON データを解析しようとするとGolang の json.Unmarshal 関数を使用した HTTP リクエストでは、次のエラーが発生する場合があります。発生:
"invalid character 'ï' looking for beginning of value"
このエラーは通常、JSON 応答にバイト オーダー マーク (BOM) 文字が含まれている場合に発生します。 BOM はテキスト ファイルのエンコーディングを識別するため、デコード前に削除する必要があります。
この問題を解決するには、次のコードを使用して JSON 応答から BOM 文字を削除できます:
body := bytes.TrimPrefix(body, []byte("\xef\xbb\xbf")) // Or []byte{239, 187, 191}
BOM 文字が削除されると、JSON 応答を期待どおりにデータ構造にアンマーシャリングできます。
たとえば、次のコードBOM を含む JSON 応答を処理するように変更できます:
body, err := ioutil.ReadAll(response.Body) defer response.Body.Close() if err != nil { return "", tracerr.Wrap(err) } // Remove BOM body = bytes.TrimPrefix(body, []byte("\xef\xbb\xbf")) transTransform = TransformTextResponse{} err = json.Unmarshal(body, &transTransform) if err != nil { return "", tracerr.Wrap(err) }
JSON 応答を解析する前に BOM 文字を削除すると、エラーが解決され、データ構造を正常にアンマーシャリングできます。
以上がGolang の json.Unmarshal で発生する「無効な文字 \'�\' が値の先頭を探しています」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。