Golang JSON: アンマーシャリングによるネストされた配列の処理
Go では、アンマーシャリング後にネストされた JSON 配列を操作する場合、エラーを理解することが重要です「タイプ インターフェイス {} はインデックス作成をサポートしていません。」このエラーは、interface{} 変数に格納されている JSON 配列内の要素にアクセスしようとすると発生します。
この問題を解決するには、型アサーションを利用して、interface{} 変数を基礎となる配列タイプ。
JSON モジュールでのインターフェイス{}表現
JSON モジュールは、配列を []interface{} スライスとして表し、辞書を map[string]interface{ として表します。
型アサーションを使用したネストされた要素へのアクセス
エラー チェックを行わずに、次のように型アサーションを使用して JSON 配列を移動できます。{} :
<code class="go">objects := result["objects"].([]interface{}) first := objects[0].(map[string]interface{}) fmt.Println(first["ITEM_ID"])</code>
ただし、型が一致しない場合、これらの型アサーションはパニックを起こす可能性があることに注意することが重要です。この問題を回避するには、2 つのリターン フォームを使用してエラーを確認します。
<code class="go">objects, ok := result["objects"].([]interface{}) if !ok { // Handle error here }</code>
Decoding into a Structure for Enhanced Access
If the JSONデータは一貫した形式に従っています。より効率的な解決策は、データを構造化型にデコードすることです。たとえば、提供されたデータに基づいて:
<code class="go">type Result struct { Query string `json:"query"` Count int `json:"count"` Objects []struct { ItemId string `json:"ITEM_ID"` ProdClassId string `json:"PROD_CLASS_ID"` Available int `json:"AVAILABLE"` } `json:"objects"` }</code>
この構造体にデコードすると、result.Objects[0].ItemId を使用してアイテム ID に直接アクセスできます。このアプローチにより、型アサーションの必要性がなくなり、ネストされた要素にアクセスするための型安全なメソッドが提供されます。
以上がGo JSON アンマーシャリングで入れ子になった配列を処理するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。