Go で入れ子になった動的構造を含む JSON データを解析するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-19 16:25:02
オリジナル
208 人が閲覧しました

How to Parse JSON Data with Nested Dynamic Structures in Go?

JSON ネストされた動的構造のデコードに進む

このディスカッションでは、ネストされた動的構造を含む JSON データを解析するという課題について検討します。

問題:

サンプル JSON データには、以下に示すように、電話番号などの動的キーを含むネストされた構造が含まれています。

{
    "status": "OK",
    "status_code": 100,
    "sms": {
        "79607891234": {
            "status": "ERROR",
            "status_code": 203,
            "status_text": "Нет текста сообщения"
        },
        "79035671233": {...},
        "79105432212": {...}
    },
    "balance": 2676.18
}
ログイン後にコピー

提供されたサンプル コードは、電話番号の固定リストを使用して入れ子構造をモデル化しようとしますが、このアプローチは電話番号の動的な性質により失敗します。 key.

解決策:

ネストされた動的構造を処理するには、固定リストの代わりにマップを使用してデータをモデル化する必要があります。この例では、次のデータ構造を使用できます。

type SMSPhone struct {
    Status     string `json:"status"`
    StatusCode int    `json:"status_code"`
    StatusText string `json:"status_text"`
}

type SMSSendJSON struct {
    Status     string              `json:"status"`
    StatusCode int                 `json:"status_code"`
    Sms        map[string]SMSPhone `json:"sms"`
    Balance    float64             `json:"balance"`
}
ログイン後にコピー

この更新された構造では、map[string]SMSPhone を使用してネストされた "sms" オブジェクトを表します。マップ キーは動的オブジェクトに対応します。電話番号。

JSON データをこれらの構造にアンマーシャリングするには、次のコードを使用できます。

var result SMSSendJSON

if err := json.Unmarshal([]byte(src), &result); err != nil {
    panic(err)
}
fmt.Printf("%+v", result)
ログイン後にコピー

結果は、ネストされた動的電話番号データを含むマップを含む Go 構造体になります。

Go での動的構造のマップの使用方法を示す関連質問には、次のものが含まれます。

  • 解析/逆配列する方法Golang の動的 JSON
  • 構造体に未知のフィールド名を持つ JSON をアンマーシャリングする方法golang?
  • 不明なフィールドを持つ JSON をアンマーシャルします
  • 構造体自体の 1 つの要素を持つ構造体に json 文字列をアンマーシャルします

以上がGo で入れ子になった動的構造を含む JSON データを解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート