【发布时间】:2022-01-20 11:18:52
【问题描述】:
我收到来自外部 API 的响应,该 API 的字段可以有 2 个值:
{"field": []}
或
{"field": {"key1": "value", "key2": "value"}}
我将结构设置为
type Object Struct {
Field map[string]string `json:"field,omitempty"`
}
然后调用我自己实现的函数来解码响应
func decode(response *http.Response) (*Object, error) {
var response Object
err := json.NewDecoder(response.Body).Decode(&response)
if err != nil {
return nil, err
}
return &response, nil
}
但这仅适用于第二个响应(当字段不为空时)。对于第一个响应,我得到一个错误。
【问题讨论】:
-
当
field小写时,你确定它适用于第二种情况吗? -
这只是粘贴到这里时的一个错字。但我不认为这与解码有任何关系
-
它与它有关,如果字段未导出(小写),则两种情况下您的解码都将失败
-
将
Field定义为interface{}类型,解组并稍后键入断言