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

我有 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{}

它不起作用


白衣非少年
浏览 190回答 1
1回答

幕布斯6054654

就问题的理解而言,我的理解是您可以按以下方式格式化数据。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)如果您不知道地图的键,您仍然可以遍历地图值并获取数据。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go