我正在编写一个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
进行第一次解组,因此结构有GroupId
和GroupName
就好了,Members
为空,因为调用没有返回任何内容为了它。
然后我调用club.GetMembers()
来填充Members
字段,以便填充整个结构,但它似乎没有将它提取到结构中,因为最后Members
仍为空,GroupId
和GroupName
的数据仍然存在。
我肯定知道这个电话正在回复我所期待的,所以我觉得它Unmarshal
没有用,所以我该如何解决这个问题呢?这不在Unmarshal
的功能范围内吗?
修改 我只是将确切的代码推送到github,仍然不确定。
这是回购:https://github.com/PeteJodo/gosun
这是使用上述回复的要点:https://gist.github.com/PeteJodo/d5335b9f66304148483b
关注的主要文件:
答案 0 :(得分:0)
好的,所以我的问题与Unmarshal
无关。发生的事情是API响应返回:
{
results: [{
group_id: 123,
group_name: "cool kids"
}, ...],
...
}
......每个结果都是一个单独的组。我的问题是,每个组都是它自己的结构,我有一个Group
结构的方法,可以进行下一次调用以扩展其Members
字段,我正在使用{{ 1}} struct作为Group
的目标,而不是类似于Unmarshal
的内容,可以为API响应正确构建,然后提取正确的Results
及其Group
字段< / p>