ホームページ  >  記事  >  バックエンド開発  >  Go JSON アンマーシャリングで入れ子になった配列を処理するには?

Go JSON アンマーシャリングで入れ子になった配列を処理するには?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-05 16:10:031014ブラウズ

How to Handle Nested Arrays in Go JSON Unmarshalling?

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 サイトの他の関連記事を参照してください。

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