[英]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.