JSON 嵌套动态结构 Go 解码
在此场景中,JSON 响应包含嵌套“sms”对象中的动态密钥。传统的结构体解码方法会因为未知的电话号码作为键而失败。
解决方案:地图和动态键处理
为了有效地反序列化此类数据,地图数据结构受雇。下面修改后的代码引入了一个map[string]SMSPhone来模拟“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"` }
解组过程
使用此映射,解组进程现在可以正确处理动态电话数字:
var result SMSSendJSON if err := json.Unmarshal([]byte(src), &result); err != nil { panic(err) }
示例输出
结果映射将包含电话号码作为键及其关联的 SMSPhone 结构:
{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}
这种方法允许使用动态嵌套结构对 JSON 响应进行高效解码。
以上是如何在 Go 中使用动态嵌套键解码 JSON?的详细内容。更多信息请关注PHP中文网其他相关文章!