go - 尝试从JSON响应中获取 “Total”的值

标签 go struct pretty-print

响应:
{
“元”:{
“query_time”:0.039130201,
“分页”:{
“偏移”:1345,
“限制”:5000,
总:1345
},
结构:
输入InLicense struct {
总共int16 json:"total,omitempty"}
输入OutLicense struct {
分页[] InLicense json:"pagination,omitempty"}
输入MetaLicense struct {
元[] OutLicense json:"meta,omitempty"}
函数内部的代码片段:
req,err:= http.NewRequest(“GET”,,nil)
如果err!= nil {
//处理错误
}
客户:=&http.Client {}
resp,err:= client.Do(要求)
如果err!= nil {
log.Println(“Error:”,err)
}
延迟resp.Body.Close()
val:=&MetaLicense {}

err = json.NewDecoder(resp.Body).Decode(&val)
if err != nil {
    log.Fatal(err)
}

for _, s := range val.Meta {
    for _, a := range s.Pagination {
        fmt.Println(a.Total)
    }

}
}
运行此代码后,出现以下错误:
json:无法将对象解码为[] OutLicense类型的Go结构字段MetaLicense.meta
为了正确解码[] OutLicense,需要使用哪种类型?我无法以其他方式打印它,但是它使用{}和Strings.Trim打印。

最佳答案

您应该只使用一个具有实际类型的简单字段声明,而不要使用以下类型的[]:

type InLicense struct {
    Total int16 json:"total,omitempty"
}

type OutLicense struct {
     Pagination InLicense json:"pagination,omitempty"
}

type MetaLicense struct {
    Meta OutLicense json:"meta,omitempty"
}

关于go - 尝试从JSON响应中获取 “Total”的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63163215/

相关文章:

go - 如何从 golang 中的 sql 解析 *time.Time?

vb.net - 将串联的 VB.NET 字符串文字转换为多行字符串

go - 为什么反射要与 UNEXPORTED Struct 和 Unexported Fields 一起使用?

go - Go 中将 io.ReadCloser 流式传输到文件的最有效方法?

c - 在现有的 C 项目上使用 Go

c++ - c/c++ 函数模板中数组的正确格式

go - 简单如果不工作 go 模板

c++ - 使用结构体从 .txt 文件读取着色器

javascript - 如何使用命令行美化 JavaScript 代码?

json - JSON格式,来自文件或变量