Go 新手,正在尝试理清如何处理 JSON

来自 Python、Ruby 和 JS 等语言,我现在真的在为 Go 苦苦挣扎。感觉过于复杂,但我希望我只是遗漏了一些东西。

现在我有代码可以成功调用波士顿的 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 个小时盯着文档,感觉就像在看一门外语:)。

寻求具体帮助可能太多了,但我会喜欢的。


慕田峪9158850
浏览 170回答 1
1回答

互换的青春

只需将它们映射到新类型: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)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go