ホームページ >バックエンド開発 >Golang >Golang の json.Unmarshal で発生する「無効な文字 \'�\' が値の先頭を探しています」エラーを解決するにはどうすればよいですか?

Golang の json.Unmarshal で発生する「無効な文字 \'�\' が値の先頭を探しています」エラーを解決するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-30 18:10:15299ブラウズ

How to Resolve the

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。