Unmarshaling JSON не печатать значения в Stuct - PullRequest
0 голосов
/ 05 января 2020

Я пытаюсь получить список напоминаний из слабины, вызывая его API. Мне нужно извлечь метку времени и идентификатор пользователя из ответа. Но я не могу получить значения, скопированные в struct, при демаршалировании JSON.

package main

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
    "log"
    "net/http"
    "time"
)

type ReadingHttpResponse struct {
    ID         string    `json:"id"`
    Creator    string    `json:"creator"`
    User       string    `json:"user"`
    Text       string    `json:"text"`
    Recurring  bool      `json:"recurring"`
    Time       time.Time `json:"time"`
    CompleteTS int       `json:"complete_ts"`
}

func main() {

url := "https://slack.com/api/reminders.list"
    var bearer = "Bearer " + "My Bearer token"
    req, err := http.NewRequest("GET", url, nil)
    req.Header.Add("Authorization", bearer)
    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        log.Println("Error on response.\n[ERRO] -", err)
    }

    body, err := ioutil.ReadAll(resp.Body)

    if err != nil {
        fmt.Println(err)
    }

    var m ReadingHttpResponse

    err = json.Unmarshal(body, &m)

    if err != nil {
        fmt.Println(err)
    }

   fmt.Printf("%#v\r\n", m)

}

json в ответ от api:

"ok": true, "памятки": [{"id": "bacsasdad", "creator": "asdasdww", "user": "asdasdad", "text": "Здравствуйте, это только для целей тестирования", "recurring": false, "time": 1578470823, "complete_ts": 0}]}

Но данные Unmarshaled не имеют значений

main.ReadingHttpResponse {ID: "", Creator: "", Пользователь: "", Текст: "", Повторяющееся: false, Время: время. Время {стена: 0x0, ext: 0, lo c: (* time.Location) (nil)}, CompleteTS: 0}

1 Ответ

3 голосов
/ 05 января 2020

Ваша структура не соответствует ответу JSON, она должна выглядеть следующим образом:


type ReadingHttpResponse struct {
    Ok        bool `json:"ok"`
    Reminders []Reminder `json:"reminders"`
}

type Reminder struct {
        ID         string `json:"id"`
        Creator    string `json:"creator"`
        User       string `json:"user"`
        Text       string `json:"text"`
        Recurring  bool   `json:"recurring"`
        Time       int    `json:"time"`
        CompleteTs int    `json:"complete_ts"`
} 

...