json - 新手Go,试图梳理如何处理JSON

标签 json go

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

现在我的代码可以成功调用波士顿的 MBTA API(使用他们的公共(public)开发者 key ) 并返回所有路线信息。

我把代码放在这里: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 个小时盯着文档,我觉得我在看一门外语:)。

寻求具体帮助可能太多了,但我很乐意。

最佳答案

只需将它们映射到一个新类型:

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)
}

关于json - 新手Go,试图梳理如何处理JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32554642/

相关文章:

javascript - 将 json 与 html 文件分开

go - 将优化标志传递给 Go 编译器?

function - 如何理解这个递归结果

javascript - 语法错误 : Unexpected Number (JSON. 解析)

node.js - 解析 '...THtwvnO2F9FWD7HrMJoGZ' 附近时 JSON 输入意外结束

javascript - 如何为 JSON 文件中的每个对象声明一个变量?

ruby-on-rails - to_json 不将特殊字符转换为 unicode 样式

go - 如何通过 'go mod' 分隔不同目录中的代码?

go - 返回接口(interface)的函数

sockets - Golang http 服务器应用程序有很多套接字 (CLOSE_WAIT)