ホームページ >バックエンド開発 >Golang >Go で動的にネストされた JSON 構造を逆シリアル化する方法は?

Go で動的にネストされた JSON 構造を逆シリアル化する方法は?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-15 13:38:021011ブラウズ

How to Deserialize Dynamic Nested JSON Structures in Go?

Go でネストされた動的 JSON 構造をデコードする

Go では、ネストされた動的構造を持つ JSON データを逆シリアル化するのは困難な場合があります。最近のクエリはこの問題を示しています。

{
    "status": "OK",
    "status_code": 100,
    "sms": {
        "79607891234": {
            "status": "ERROR",
            "status_code": 203,
            "status_text": "Нет текста сообщения"
        },
        "79035671233": {
            "status": "ERROR",
            "status_code": 203,
            "status_text": "Нет текста сообщения"
        },
        "79105432212": {
            "status": "ERROR",
            "status_code": 203,
            "status_text": "Нет текста сообщения"
        }
    },
    "balance": 2676.18
}

このようなデータを逆シリアル化するには、マップを使用して SMS ステータスの動的リストをモデル化する必要があります。変更されたコードは次のとおりです:

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"`
}

次に、この変更された構造体を使用して JSON データをアンマーシャリングします:

var result SMSSendJSON

if err := json.Unmarshal([]byte(src), &result); err != nil {
    panic(err)
}
fmt.Printf("%+v", result)

動的にネストされた構造が正しく逆シリアル化され、結果は次のようになります:

{Status:OK StatusCode:100 Sms:map[79035671233:{Status:ERROR StatusCode:203 StatusText:Нет текста сообщения} 79105432212:{Status:ERROR StatusCode:203 StatusText:Нет текста сообщения} 79607891234:{Status:ERROR StatusCode:203 StatusText:Нет текста сообщения}] Balance:2676.18}

結果のキー。SMS マップは動的電話番号に対応し、その値はそれぞれの SMS です。ステータス。

以上がGo で動的にネストされた JSON 構造を逆シリアル化する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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