Передача ответа JSON в шаблон Go - PullRequest
0 голосов
/ 28 марта 2020

Я делаю запрос JSON GET и сейчас пытаюсь передать данные в мой шаблон для визуализации в пределах HTML. С Python я мог бы просто передать ответ прямо, но с Go я думаю, что мне нужно реструктурировать JSON с помощью структуры?

// index route
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {

        resp, err := http.Get("https://example.com/json")
        if err != nil {
            panic(err.Error())
        }

        defer resp.Body.Close()

        body, err := ioutil.ReadAll(resp.Body)
        if err != nil {
            panic(err.Error())
        }

        log.Println(string(body))

        err = tmpl.ExecuteTemplate(w, "index.html", body)
        if err != nil {
            panic("Oh no!")
        }
    })

Нужно ли go через JSON и вручную построить структуру для обработки или есть простой способ передать данные?

1 Ответ

1 голос
/ 28 марта 2020

В этом ответе предполагается, что вы хотели бы передать не маршалированные данные JSON, а не необработанный большой массив данных.

Вы можете просто демаршировать JSON в map[string]interface{}, что вы можете затем перейдите к шаблону.

Это будет выглядеть примерно так:

var data map[string]interface{}
if err := json.Unmarshal([]byte(rawJSON), &data); err != nil {
    // Handle error.
}

if err := tmpl.Execute(os.Stdout, data); err != nil {
    // Handle error.
}

Вот игровая площадка , демонстрирующая это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...