在Golang中解析有问题的JSON文件的最佳方法

时间:2017-01-12 08:38:16

标签: json parsing go

我有一些有效的JSON文件,有些则没有(没有周围的括号)

目前我对每种情况都有一个方法:一个使用json.Unmarshal作为有效的,另一个使用json.NewDecoder作为无括号的。

如何将它合并到一个可以处理这两种情况的函数中?

编辑: 以下是两种情况的代码:

func getDrivers() []Drivers {
    raw, err := ioutil.ReadFile("/home/ubuntu/drivers.json")
    if err != nil {
        fmt.Println(err.Error())
        os.Exit(1)
    }

    var d []Drivers
    json.Unmarshal(raw, &d)
    return d
}

func getMetrics() []Metrics {
        file, err := os.Open("/home/ubuntu/metrics.json")
        if err != nil {
           fmt.Println("bad err!")
        }
        r := bufio.NewReader(file)
        dec := json.NewDecoder(r)

        // while the array contains values
        var metrics []Metrics
        for dec.More() {
                var m Metrics
                err := dec.Decode(&m)
                if err != nil {
                        log.Fatal(err)
                }
                metrics = append(metrics, m)
        }
    return metrics
}

谢谢

0 个答案:

没有答案