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