如何为带有任意键对象值的JSON定义对应的Go struct结构?
你当前的结构体定义无法匹配JSON结构的核心原因是data字段下的键是动态的字符串(UUID格式),不是固定的ReceiptID字段名,所以不能用固定字段的结构体来接收这部分数据,改用map类型即可解决。
调整后的结构体定义
// 定义每个动态UUID对应的值的固定结构 type ReceiptItem struct { Status string `json:"status,omitempty"` Message string `json:"message,omitempty"` Details string `json:"details,omitempty"` } type ReceiptResult struct { // 用map类型接收动态键集合:键为任意字符串,值为ReceiptItem结构 Data map[string]ReceiptItem `json:"data"` }
解析使用示例
var result ReceiptResult // respBody为HTTP响应体的字节数组 err := json.Unmarshal(respBody, &result) if err != nil { // 处理解析错误 } // 遍历获取所有回执ID和对应数据 for receiptID, item := range result.Data { // 业务逻辑处理,比如打印结果 fmt.Printf("回执ID:%s 状态:%s 消息:%s 详情:%s\n", receiptID, item.Status, item.Message, item.Details) }
内容的提问来源于stack exchange,提问作者Nasim Chowdhury
相关产品推荐
相关产品推荐

