enc := json.NewEncoder(w)
err := enc.Encode(struct {
Method string `json:"method"`
Results []interface{} `json:"results"`
CacheTime int `json:"cache_time"`
}{Method: answerInlineQueryMethod, Results: results, CacheTime: 0})
if err != nil {
log.Printf("failed to answer to inline query: %s", err)
}
如何区分应该导致恐慌的JSON错误和发送响应所导致的错误,哪些应该记录?
答案 0 :(得分:9)
encoding/json
包定义了它将返回的错误类型。对于编码,您有MarshalerError
,
UnsupportedTypeError
,
和UnsupportedValueError
。
您可以检查Encode
返回的错误类型是否为其中之一。
如果响应不是很大并且不依赖于根据json.Encoder
协议发送多个json值,则只需使用json.Marshal
并单独编写响应即可。