天天看點

go解析Prometheus的資料

通路一個api, 傳回如下資料:

{"status":"success","data":{"resultType":"matrix","result":[{"metric":{},"values":[[1473820558.361,"28765"],[1473820573.361,"28768"],[1473820588.361,"28772"],[1473820603.361,"28776"],[1473820618.361,"28780"],[1473820633.361,"28783"],[1473820648.361,"28786"],[1473820663.361,"28790"],[1473820678.361,"28793"],[1473820693.361,"28796"],[1473820708.361,"28799"],[1473820723.361,"28802"],[1473820738.361,"28806"],[1473820753.361,"28809"],[1473820768.361,"28817"],[1473820783.361,"28829"],[1473820798.361,"28832"],[1473820813.361,"28858"],[1473820828.361,"28862"],[1473820843.361,"28867"],[1473820858.361,"28873"]]}]}}

需要解析 600570.SS 後的json資料,用了 simplejson包

可是對傳回的arr資料,用了18般武藝都解析不了。 arr類型理論是一個interface{}類型,但是裡面又包含了四組資料,對于這類json資料,網上文檔都沒有解析的方法。 反複嘗試後,用reflect.type 測試了下,發現系統把arr 認定為[]interface 類型,于是類型斷言後,周遊。 這回可以把裡面資料分拆開了,系統又把裡面的資料判斷為 json.Number資料類型。 然後就沒有然後了.... 經過這一番摸索,對于空接口、類型斷言,json包内部的一些設定有了更深的了解:空接口就是因為它靈活,是以在使用時要經過一系列的判斷。

上代碼: