ホームページ >バックエンド開発 >Golang >ネストされた JSON データにアクセスする際の Golang のエラー「無効な操作: d[\\\'data\\\'] (タイプ インターフェイス {} はインデックス作成をサポートしていません)」を処理する方法?

ネストされた JSON データにアクセスする際の Golang のエラー「無効な操作: d[\\\'data\\\'] (タイプ インターフェイス {} はインデックス作成をサポートしていません)」を処理する方法?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-26 09:40:02728ブラウズ

How to Handle the

エラーへの対処: 「無効な操作: d["data"] (タイプ インターフェイス {} はインデックス付けをサポートしていません)」

が発生しましたGolang でネストされた JSON データにアクセスしているとき。

動的 JSON 応答を操作するときに、「無効な操作: (type Interface {} はインデックス作成をサポートしていません)」というエラーが発生することは珍しくありません。これは、d["data"] のようにインターフェイスにインデックスを付けようとしたときに発生します。これには、map[string]interface{} など、適切なキーと値のストアに対する特定の型アサーションが必要です。

Toこれを解決するには、以下に示すように、まず変数 d が map[string]interface{} として型アサートされていることを確認する必要があります。

<code class="go">test := d.(map[string]interface{})["data"].(map[string]interface{})["type"]</code>

このアサーションを行うことで、d が明示的に宣言されていることになります。タイプは map[string]interface{} であり、そのキーにアクセスできます。その後、「データ」にアクセスし、ネストされたマップから「タイプ」プロパティを取得できます。

別のアプローチとして、d を直接マップ[文字列]インターフェース{}として宣言することもできます。

<code class="go">var d map[string]interface{}
json.NewDecoder(response.Body).Decode(&d)
test := d["data"].(map[string]interface{})["type"]</code>

そうすることで、最初の型アサーションが不要になります。

これらの操作を支援するには、動的処理に特化した github.com/icza/dyno ライブラリの使用を検討してください。オブジェクトを作成し、JSON データをナビゲートして操作するための便利なメソッドを提供します。

以上がネストされた JSON データにアクセスする際の Golang のエラー「無効な操作: d[\\\'data\\\'] (タイプ インターフェイス {} はインデックス作成をサポートしていません)」を処理する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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