区分JSON和其他错误

问题描述 投票:0回答:1
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错误和发送响应导致的错误,哪些应该记录?

json go error-handling
1个回答
9
投票

encoding/json包定义了它将返回的错误类型。对于编码,你有MarshalerErrorUnsupportedTypeErrorUnsupportedValueError

您可以检查Encode返回的错误类型是否为这些错误类型之一。

如果响应不是很大并且不依赖于根据json.Encoder协议发送多个json值,则可以简单地使用json.Marshal并单独写入响应。

© www.soinside.com 2019 - 2024. All rights reserved.