HTTP JSON ответ тела на карту - PullRequest
0 голосов
/ 26 ноября 2018

Я пытаюсь преобразовать HTTP-ответ тела JSON в map [string] interface {} в golang / 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
}

Я успешно подключилсяна сервер.Тело ответа содержит данные JSON.После выполнения кода данные указывают на ноль, почему это так?

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

http.Response.Body - это io.ReadCloser.Так что используйте это:

err := json.NewDecoder(httpResponse.Body).Decode(&data)
0 голосов
/ 26 ноября 2018

*http.Response.Body имеет тип io.ReadCloser.И вы не используете правильный метод для чтения данных тела и преобразования их в []byte.Попробуйте использовать это:

resp, errResp := ioutil.ReadAll(httpResponse.Body)
...