繁体   English   中英

Golang JSON解组多个调用

[英]Golang JSON Unmarshal multiple calls

我正在编写一个API包装器,其中对API的调用返回一些数据的json响应,可以这样说:

{
    group_id: 123,
    group_name: "cool kids",
}

对于网址example.com/api/groups

然后,您可以将fields=members附加到URL(例如: example.com/api/groups?group_id=123&fields=members fields=members 123& fields=members )以获取:

{
    members: [...some data..]
}

请注意现在其他字段是如何丢失的...

好吧,我正在尝试使用如下所示的单个struct

 type Club struct { GroupId int `json:"group_id"` GroupName string `json:"group_name"` Members []struct {...} `json:"members" } 

结构如下所示:

type Committee struct {
    GroupId     string `json:"group_id"`
    GroupName   string `json:"group_name"`
    Members     []struct {
        Person     Person  `json:"person"`
        Rank       float64 `json:"rank"`
        Side       string  `json:"side"`
        Title      string  `json:"title"`
    } `json:"members"`
}

type Person struct {
    id     string `json:"id"`
    name   string `json:"name"`
    age    int    `json:"age"`
}

func getGroup() Club {...}
func (c *Club) GetMembers() {...}

因此,我进行了第一个使用getGroup解组的调用,因此该结构具有良好的GroupIdGroupName ,而Members为空,因为该调用未返回任何内容。

然后我打电话club.GetMembers()来填充Members领域,使整个结构将被填充,但它似乎并没有被提取入结构,因为最终在Members仍然是空的,为数据GroupIdGroupName是还在那里。

我肯定知道该呼叫返回的是我所期望的,所以我认为Unmarshal无法正常工作,那么我该如何处理? 这不是Unmarshal的功能吗?

编辑我只是将确切的代码推送到github,仍然不确定。

这是仓库: https : //github.com/PeteJodo/gosun

这是使用上述仓库的要点: https : //gist.github.com/PeteJodo/d5335b9f66304148483b

需要关注的主要文件:

service.go

congress.go

Committees.go

legislators.go

好的,所以我的问题与Unmarshal无关。 发生的事情是API响应返回:

{
   results: [{
          group_id: 123,
          group_name: "cool kids"
       }, ...],
   ...
}

...每个结果都是一个单独的组。 我的问题是每个组都是它自己的结构,并且我有一个用于Group结构的方法,该方法可以进行下一个扩展其Members字段的调用,而我正在使用Group结构作为Unmarshal的目的地,而不是诸如Results这样的Results正确构造API响应,然后提取正确的Group及其Members字段

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM