Go でのネストされた JSON 配列へのアクセス
Go では、アンマーシャリング後にネストされた JSON 配列にアクセスするときに問題が発生します。応答の「objects」配列から要素を取得しようとすると、「type Interface {} はインデックス付けをサポートしていません」というエラーが発生する場合があります。
問題の理解
デフォルトでは、Go の JSON モジュールは配列を []interface{} スライスとして表し、辞書を map[string]interface{} マップとして表します。したがって、インターフェイス変数にデコードする場合、インデックスを直接使用してネストされた要素にアクセスすると失敗します。
解決策: 型アサーション
この問題に対処する 1 つのアプローチは、型アサーション。これには、interface 変数を基礎となる具象型に変換することが含まれます。{}たとえば、「objects」配列の最初のオブジェクトから ITEM_ID を抽出するには、次のようにします。
1 2 3 |
|
エラー チェック付きの型アサーション
型アサーションを実行するときは、不正な変換を処理するためにエラー チェックを組み込むことが不可欠です。例:
1 2 3 4 |
|
構造へのデコード
既知の形式の JSON に推奨される代替ソリューションは、カスタム構造に直接デコードすることです。 JSON 構造と一致する構造体を定義し、それにデコードします:
1 2 3 4 5 6 7 8 9 |
|
これにより、型アサーションの必要がなく、データに直接アクセスできるようになります:
1 2 3 |
|
以上がGo でネストされた JSON 配列にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。