我正在尝试使用 Golang 和 JSON 尝试使用从 Graphite API 中提取的数据进行一些计算。为简单起见,Graphite 发送的数据片段是:[{ "target": "server1.loadavg.1min", "datapoints": [ [ 0.16, 1422770850 ], [ 0.16, 1422770880 ], [ null, 1422771120 ] ]},{ "target": "server2.loadavg.1min", "datapoints": [ [ 0.19, 1422770850 ], [ null, 1422771390 ], [ 0.14, 1422771420 ] ]}]我一直在阅读有关如何对 JSON 任意数据使用通用接口{}的 go json 教程,但我在该过程的某些方面遇到了困难。我试图定义一个结构来保存这些数据,读取文件内容并将其解组到这个结构中:type Graphite struct { Metric struct { Target string `json:"target"` Datapoints [][]float64 `json:"datapoints"` }}var results []Graphiteerr = json.Unmarshal(d, &r)if err != nil { panic(err)}fmt.Printf("%v\n", r)但结果是:[{{ []}} {{ []}}]我当然可以使用通用接口来完成它{},但我想知道我在这里遗漏了什么。请你帮助我好吗?
2 回答
蝴蝶不菲
TA贡献1810条经验 获得超4个赞
我喜欢从最简单的类型开始,然后努力解决问题。首先,您需要表示您的数据点。
type DataPoint []float64
那么度量只是一个目标和一系列数据点。
type Metric struct {
Target string `json:"target"`
Points []DataPoint `json:"datapoints"`
}
不需要你的Graphite结构。你的 JSON 只是一个Metrics的 JSON 数组。
var results []Metric
err := json.Unmarshal([]byte(data), &results)
这是一个带有完整示例的操场链接。
- 2 回答
- 0 关注
- 239 浏览
添加回答
举报
0/150
提交
取消