为了账号安全,请及时绑定邮箱和手机立即绑定

golang 我如何从 []interface {} 类型中获取价值

golang 我如何从 []interface {} 类型中获取价值

Go
白衣非少年 2023-03-15 15:16:09
我有 var (name result["error_type"]) 类型[]interface {}和价值[map[reason:map[phone:empty] send_at:1.636697291e+09 status:error]]我如何从 type []interface {} 中获取值示例 result["error_type"]["128"]["reason"]["phone"]我得到的这种类型var result map[string]interface{}json.NewDecoder(r.Body).Decode(&result)r.Body 有 Json{  "offer_name":"EbcBankruptcy",  "offer_id":"288",  "partner_name":"середов",  "partner_id":"1",  "type_system":"gb",  "status":"success",  "date_request":"2021-01-02 11:03",  "bank_name":"alfa",  "bank_id":"1",  "type_product":"1",  "error_type":{"128": [{"reason": {"phone": "Отсутствует обязательное поле номер телефона"}, "status": "error", "send_at": 1636697291}], "200": [{"reason": {"phone": "Отсутствует обязательное поле номер телефона"}, "status": "error", "send_at": 1636697281}]},  "request_id":"1"}我也不t create structure error_type for json.NewDecoder parse because i don知道 json (128, 200, 300) 中的 error_type 中会有什么样的 id我尝试获得价值test["reason"]["phone"]但是,它不起作用也投向map[string]interface{}它不起作用
查看完整描述

1 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

就问题的理解而言,我的理解是您可以按以下方式格式化数据。


type Payload struct {

    OfferName   string                 `json:"offer_name"`

    OfferID     string                 `json:"offer_id"`

    PartnerName string                 `json:"partner_name"`

    PartnerID   string                 `json:"partner_id"`

    TypeSystem  string                 `json:"type_system"`

    Status      string                 `json:"status"`

    DateRequest string                 `json:"date_request"`

    BankName    string                 `json:"bank_name"`

    BankID      string                 `json:"bank_id"`

    TypeProduct string                 `json:"type_product"`


    // you can use the type map of array of error data here 

    ErrorType   map[string][]ErrorData `json:"error_type"`


    RequestID   string                 `json:"request_id"`

}



type ErrorData struct {

    Reason Reason `json:"reason"`

    Status string `json:"status"`

    SendAt int    `json:"send_at"`

}


type Reason struct {

    Phone string `json:"phone"`

}

使用以下内容,您可以将数据解组为


fmt.Printf("%+v", p.ErrorType["128"][0].Reason)

如果您不知道地图的键,您仍然可以遍历地图值并获取数据。


查看完整回答
反对 回复 2023-03-15
  • 1 回答
  • 0 关注
  • 85 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信