将 HTTP JSON 正文响应转换为 Go 中的映射

Dar*_*ylo 7 dictionary http httpresponse go

我正在尝试将 HTTP JSON 正文响应转换为map[string]interface{}Go。

这是我写的代码:

func fromHTTPResponse(httpResponse *http.Response, errMsg string )(APIResponse, error){
    temp, _ := strconv.Atoi(httpResponse.Status)

    var data map[string]interface{}
    resp, errResp := json.Marshal(httpResponse.Body)
    defer httpResponse.Body.Close()
    if errResp != nil {
        return APIResponse{}, errResp
    }

    err := json.Unmarshal(resp, &data)
    if err != nil {
        return APIResponse{}, err
    }

    return APIResponse{httpResponse.Status, data, (temp == OK_RESPONE_CODE), errMsg, map[string]interface{}{} }, nil
}
Run Code Online (Sandbox Code Playgroud)

我成功连接到服务器。响应的正文包含 JSON 数据。运行代码后,数据指向nil,这是为什么?

nig*_*204 8

http.Response.Bodyio.ReadCloser。所以使用这个:

err := json.NewDecoder(httpResponse.Body).Decode(&data)
Run Code Online (Sandbox Code Playgroud)