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 での動的構造のマップの使用方法を示す関連質問には、次のものが含まれます。
以上がGo で入れ子になった動的構造を含む JSON データを解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。