ホームページ  >  記事  >  バックエンド開発  >  インターフェイスをマップに変換すると、「インターフェイス変換: インターフェイス {} は []インターフェイス {} であり、マップ[文字列]インターフェイス {} ではありません」というエラーが発生するのはなぜですか?

インターフェイスをマップに変換すると、「インターフェイス変換: インターフェイス {} は []インターフェイス {} であり、マップ[文字列]インターフェイス {} ではありません」というエラーが発生するのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-02 01:48:31298ブラウズ

Why am I getting an

インターフェイス変換エラー: 無効なマッピング

インターフェイスをマップに変換しようとすると、JSON 解析中にエラーが発生し、次のメッセージが表示されます「インターフェイス変換: インターフェイス {} は []インターフェイス {} であり、マップ[文字列]インターフェイス {} ではありません。」

説明

エラーは、次の間の不一致を示しています。データ型。提供されたコード スニペットでは、次の行はオーガニック結果リストから結果を抽出します。

result := fmt.Sprintf("%v", response["organic_results"].(map[string]interface{})["title"])

response["organic_results"] はマップであると想定されており、その値は map[string としてキャストされる必要があります。 ]インターフェース{}を使用して、特定のタイトル値にアクセスします。ただし、response["organic_results"] の実際のデータ型は、マップではなくインターフェース ([]interface{}) のスライスです。

Solution

エラーを解決するには、コードをそれに応じて修正する必要があります。

for _, item := range response["organic_results"].([]interface{}) {
    fmt.Sprintf("%v", item.(map[string]interface{})["title"])
}

ここで、ループは []interface{} スライス内の各項目を反復処理し、各項目は map[string]interface{ としてキャストされます。 } タイトルの値を抽出します。

以上がインターフェイスをマップに変換すると、「インターフェイス変換: インターフェイス {} は []インターフェイス {} であり、マップ[文字列]インターフェイス {} ではありません」というエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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