我有 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{}
它不起作用
uj5u.com熱心網友回復:
就問題的理解而言,我的理解是您可以按以下方式格式化資料。
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)
如果您不知道地圖的鍵,您仍然可以遍歷地圖值并獲取資料。
這是游樂場鏈接https://go.dev/play/p/oTF0JUwOj0D
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/535729.html
標籤:JSON去界面变量
