新手,尝试整理如何处理JSON
来自Python、Ruby和JS等语言的我现在真的很难适应Go。这感觉太复杂了,但我希望我只是错过了一些东西 现在,我有一些代码可以成功地调用Boston的MBTA API(使用其公共开发人员密钥)并返回所有路由信息 我在这里删除了代码:在这里: 返回的示例数据: 我想返回两件事1)只返回每个路由类型和模式名称,2)当调用路由类型时,返回每个路由id和路由名称 不管什么原因,我完全迷路了。我花了16个小时盯着文档,我觉得我在看一门外语:)新手,尝试整理如何处理JSON,json,go,Json,Go,来自Python、Ruby和JS等语言的我现在真的很难适应Go。这感觉太复杂了,但我希望我只是错过了一些东西 现在,我有一些代码可以成功地调用Boston的MBTA API(使用其公共开发人员密钥)并返回所有路由信息 我在这里删除了代码:在这里: 返回的示例数据: 我想返回两件事1)只返回每个路由类型和模式名称,2)当调用路由类型时,返回每个路由id和路由名称 不管什么原因,我完全迷路了。我花了16个小时盯着文档,我觉得我在看一门外语:) 请求特定的帮助可能太多了,但我会喜欢的。只需将它们映射到
请求特定的帮助可能太多了,但我会喜欢的。只需将它们映射到新类型:
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)
}
需要注意的是,代码中的API密钥是公开的。go json包有很好的文档记录,并且在许多博客(包括官方的golang.org)上都有详细的描述。你能告诉我们你尝试了什么但没有成功吗?老兄,谢谢你--我知道这很讨厌,但你不明白你帮了我多少忙对我来说是有意义的。