我正在嘗試使用 Golang 和 JSON 嘗試使用從 Graphite API 中提取的數(shù)據(jù)進行一些計算。為簡單起見,Graphite 發(fā)送的數(shù)據(jù)片段是:[{ "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 ] ]}]我一直在閱讀有關(guān)如何對 JSON 任意數(shù)據(jù)使用通用接口{}的 go json 教程,但我在該過程的某些方面遇到了困難。我試圖定義一個結(jié)構(gòu)來保存這些數(shù)據(jù),讀取文件內(nèi)容并將其解組到這個結(jié)構(gòu)中: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)但結(jié)果是:[{{ []}} {{ []}}]我當然可以使用通用接口來完成它{},但我想知道我在這里遺漏了什么。請你幫助我好嗎?
2 回答

蝴蝶不菲
TA貢獻1810條經(jīng)驗 獲得超4個贊
我喜歡從最簡單的類型開始,然后努力解決問題。首先,您需要表示您的數(shù)據(jù)點。
type DataPoint []float64
那么度量只是一個目標和一系列數(shù)據(jù)點。
type Metric struct {
Target string `json:"target"`
Points []DataPoint `json:"datapoints"`
}
不需要你的Graphite結(jié)構(gòu)。你的 JSON 只是一個Metrics的 JSON 數(shù)組。
var results []Metric
err := json.Unmarshal([]byte(data), &results)
這是一個帶有完整示例的操場鏈接。
- 2 回答
- 0 關(guān)注
- 262 瀏覽
添加回答
舉報
0/150
提交
取消