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

在Golang中解析有问题JSON文件的最佳方法,json,parsing,go,Json,Parsing,Go,我有一些有效的JSON文件,还有一些不是(没有括号) 目前,我对每种情况都有一个方法:一个使用json.Unmarshal作为有效的方法,另一个使用json.NewDecoder作为无括号的方法 如何将它合并到一个函数中?什么可以处理这两种情况 编辑: 以下是两个案例的代码: func getDrivers() []Drivers { raw, err := ioutil.ReadFile("/home/ubuntu/drivers.json") if err != nil {

我有一些有效的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
}

谢谢

请给我们一个例子。@kambi您能为这两种情况提供json示例吗。如果json文件无效,那么json解析器就不会神奇地解析无效的json。。首先要使其有效。如果缺少大括号,为什么不直接添加大括号,然后进行解码?