ホームページ >バックエンド開発 >Golang >JSON Unmarshal での「無効な文字 \'ï\' が値の先頭を探しています」エラーを修正する方法

JSON Unmarshal での「無効な文字 \'ï\' が値の先頭を探しています」エラーを修正する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-12-02 17:15:15415ブラウズ

How to Fix

エラー処理: JSON アンマーシャル中の無効な文字エラーの解決

json.Unmarshal を使用して JSON 出力をアンマーシャルしようとしたときに、Microsoft Translator への Web サービス リクエストでエラーが発生しました。発生した具体的なエラーは、「値の先頭を検索する無効な文字 'ï'」でした。

問題の調査

JSON 応答を文字列として検査すると、データが有効であることが明らかになりました。 。ただし、応答のバイト配列と予想されるデータの手動でマーシャリングされたバージョンを比較すると、不一致が明らかになりました。

問題の特定

この不一致は、バイト オーダー マークの存在に起因すると考えられます。 (BOM) が応答に含まれます。 BOM は、テキスト ファイルのエンコーディングを識別する特殊文字です。この場合は UTF-8 です。

解像度

BOM は、JSON 応答をデコードする前に削除する必要があります。これは、次のコード行を使用して実現できます。

body = bytes.TrimPrefix(body, []byte("\xef\xbb\xbf")) // Or []byte{239, 187, 191}

説明

bytes.TrimPrefix 関数は、本文バイト配列の先頭から BOM を削除し、後続の json.Unmarshal を許可します。無効な文字エラーが発生せずに操作を続行できます。

結論

エラーjson.Unmarshal 中に「無効な文字 'ï' が値の始まりを探しています」というエラーが発生するのは、JSON 応答の BOM が原因である可能性があります。 bytes.TrimPrefix 関数を使用して BOM を削除すると、問題が解決され、データが正常にアンマーシャリングされるようになります。

以上がJSON Unmarshal での「無効な文字 \'ï\' が値の先頭を探しています」エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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