[英]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
解组的调用,因此该结构具有良好的GroupId
和GroupName
,而Members
为空,因为该调用未返回任何内容。
然后我打电话club.GetMembers()
来填充Members
领域,使整个结构将被填充,但它似乎并没有被提取入结构,因为最终在Members
仍然是空的,为数据GroupId
和GroupName
是还在那里。
我肯定知道该呼叫返回的是我所期望的,所以我认为Unmarshal
无法正常工作,那么我该如何处理? 这不是Unmarshal
的功能吗?
编辑我只是将确切的代码推送到github,仍然不确定。
这是仓库: https : //github.com/PeteJodo/gosun
这是使用上述仓库的要点: https : //gist.github.com/PeteJodo/d5335b9f66304148483b
需要关注的主要文件:
好的,所以我的问题与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.