当前位置: > > > > 解组 JSON 时不打印 Stuct 中的值
解组 JSON 时不打印 Stuct 中的值
来源:stackoverflow
2024-04-25 08:09:32
0浏览
收藏
偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《解组 JSON 时不打印 Stuct 中的值》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!
问题内容
我正在尝试通过调用 slack 的 api 来获取其提醒列表。我需要从响应中提取时间戳和用户 id。但在解组 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)
}
api 响应的 json 为
“ok”:true,”reminders”:[{“id”:”bacsasdad”,”creator”:”asdasdww”,”user”:”asdasdad”,”text”:”您好,这仅用于测试目的”, “重复”:假,“时间”:1578470823,“complete_ts”:0}]}
但是 unmarshaled 数据没有值
main.readinghttpresponse{id:””, 创建者:””, 用户:””, 文本:””, 重复:false, 时间:time.time{wall:0x0, ext:0, loc:(*time .位置)(nil)},完整ts:0}
解决方案
您的结构与 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"`
}
好了,本文到此结束,带大家了解了《解组 JSON 时不打印 Stuct 中的值》,希望本文对你有所帮助!关注米云公众号,给大家分享更多Golang知识!
