我正在解组一个 yaml 文件snmp.yml。我想知道是否可以就创建更好的结构获得建议。这就是我现在所拥有的,但我猜我为 Metric 创建的结构很好,但 SNMPyaml 需要更好的重组才能完全能够正确使用未编组的数据。
非常感谢这里的任何建议/反馈。先感谢您!
package system
import (
"fmt"
"io/ioutil"
"log"
"path/filepath"
y "gopkg.in/yaml.v2"
)
//SNMPyaml struct
type SNMPyaml struct {
Metrics Metric `yaml:"metrics"`
}
//Metric exportable
type Metric struct {
Name string `yaml:"name,omitempty"`
Oid string `yaml:"oid"`
Type string `yaml:"type"`
Help string `yaml:"help,omitempty"`
}
// Yamlparser
func Yamlparser() {
// Read the snmp.yml file
absPath, _ := filepath.Abs("./app/snmp.yml")
yamlFile, yamlerror := ioutil.ReadFile(absPath)
if yamlerror != nil {
log.Fatalf("ioutil err: %v", yamlerror)
}
//Unmarshall
var c SNMPyaml
err := y.Unmarshal(yamlFile, &c)
if err != nil {
log.Fatal(err)
}
fmt.Print(c)
}
metrics:
- name: sysStatClientCurConns
oid: 1.3.6.1.4.1.3375.2.1.1.2.1.8
type: gauge
indexes:
- labelname: sysStatClientCurConns
type: gauge
- name: sysClientsslStatCurConns
oid: 1.3.6.1.4.1.3375.2.1.1.2.9.2
type: gauge
indexes:
- labelname: sysClientsslStatCurConns
type: gauge
- name: sysClientSslStatTotNativeConns
oid: 1.3.6.1.4.1.3375.2.1.1.2.9.6
type: gauge
indexes:
- labelname: sysClientSslStatTotNativeConns
type: gauge
我得到的错误是:
2019/07/31 23:25:58 yaml: line 25: mapping values are not allowed in this context
exit status 1