Golang JSON解组多个呼叫

时间:2015-07-10 22:59:32

标签: json struct go

我正在编写一个API包装器,其中对API的调用会返回某些数据的json响应,让我们说:

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

表示网址example.com/api/groups

然后,您可以将fields=members添加到网址(类似于:example.com/api/groups?group_id=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

1 个答案:

答案 0 :(得分:0)

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

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

......每个结果都是一个单独的组。我的问题是,每个组都是它自己的结构,我有一个Group结构的方法,可以进行下一次调用以扩展其Members字段,我正在使用{{ 1}} struct作为Group的目标,而不是类似于Unmarshal的内容,可以为API响应正确构建,然后提取正确的Results及其Group字段< / p>