猿问

如何正确编码 UTF-8 中的 HTTP 响应字节?

使用包发出 HTTP 请求后http,我正在阅读响应:


    resp, _ := client.Do(request)

    defer resp.Body.Close()

    responseBody, _ := ioutil.ReadAll(resp.Body)

    log.Println("body", string(responseBody))

响应是 JSON 格式,包含俄语字符,所以我在控制台中看到


{"error_code":201,"error_name":"\u041f\u043e\u043b ... "}

如何解码响应字节以便我看到可读消息?


四季花海
浏览 129回答 1
1回答

米琪卡哇伊

Go 中的 JSON 解码器可以处理编码符号,您需要在 struct 或其他值中解组有效负载:https://play.golang.org/p/Mt-phU4kxfypackage mainimport (    "encoding/json"    "fmt")func main() {    payload := []byte(`{"error_code":201,"error_name":"\u041f\u043e\u043b ... "}`)    var p interface{}    _ = json.Unmarshal(payload, &p)    fmt.Printf("%#v\n", p) // map[string]interface {}{"error_code":201, "error_name":"Пол ... "}    var e struct {        ErrorCode int    `json:"error_code"`        ErrorName string `json:"error_name"`    }    _ = json.Unmarshal(payload, &e)    fmt.Println(e.ErrorCode, e.ErrorName) // 201 Пол ...}
随时随地看视频慕课网APP

相关分类

Go
我要回答