簡體   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