亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go 新手,正在嘗試理清如何處理 JSON

Go 新手,正在嘗試理清如何處理 JSON

Go
慕田峪9158850 2021-11-08 15:34:01
來自 Python、Ruby 和 JS 等語言,我現在真的在為 Go 苦苦掙扎。感覺過于復雜,但我希望我只是遺漏了一些東西?,F在我有代碼可以成功調用波士頓的 MBTA API(使用他們的公共開發人員密鑰)并返回所有路線信息。我已經把代碼放在這里:http : //pastebin.com/PkBaP714和這里:http : //pastebin.com/7mRxgrpp返回的樣本數據:http : //pastebin.com/M2hzMKYs我想返回兩件事 1) 只是每個 route_type 和 mode_name,以及 2) 當 route_type 被稱為每個 route_id 和 route_name 時。無論出于何種原因,我都完全迷失了。我花了 16 個小時盯著文檔,感覺就像在看一門外語:)。尋求具體幫助可能太多了,但我會喜歡的。
查看完整描述

1 回答

?
互換的青春

TA貢獻1797條經驗 獲得超6個贊

只需將它們映射到新類型:


func main() {

    flag.Parse()

    c := gombta.Client{APIKey: apikey, URL: apiurl}


    // get a list of routes by type

    d, err := c.GetRoutes(format)

    check(err)


    var toPrint interface{}


    if typeid == 9999 {

        type Result struct {

            RouteType string `json:"route_type"`

            ModeName  string `json:"mode_name"`

        }

        rs := []Result{}

        for _, m := range d.Mode {

            rs = append(rs, Result{

                RouteType: m.RouteType,

                ModeName:  m.ModeName,

            })

        }

        toPrint = rs

    } else {

        type Result struct {

            RouteID   string `json:"route_id"`

            RouteName string `json:"route_name"`

        }

        rs := []Result{}

        for _, m := range d.Mode {

            if fmt.Sprint(typeid) == m.RouteType {

                for _, r := range m.Route {

                    rs = append(rs, Result{

                        RouteID:   r.RouteID,

                        RouteName: r.RouteName,

                    })

                }

            }

        }

        toPrint = rs

    }


    j, err := json.MarshalIndent(toPrint, "", " ")

    fmt.Printf("RouteTypes: ")

    os.Stdout.Write(j)

}



查看完整回答
反對 回復 2021-11-08
  • 1 回答
  • 0 關注
  • 210 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號