Golang 解析 prometheus api 数据

wmd_nb · 2021-11-26 17:03:34 · 988 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2021-11-26 17:03:34 的主题,其中的信息可能已经有所发展或是发生改变。

package main

import (
    "encoding/json"
    "fmt"
    "strconv"
)

type Person struct {
    Age  string `json:"status"`
    Data Data   `json:"data"`
    Name string `json:"name"`
}

type Data struct {
    Values []map[string]interface{} `json:"result"`
}

func main() {
    // 假数据
    b := []byte(`{"status":"success","wmd":{"result":"wmd"},"name":"wmd","data":{"resultType":"matrix","result":[{"metric":{"__name__":"namedprocess_namegroup_memory_bytes","groupname":"root","instance":"localhost:9256","job":"process_export_9256","memtype":"resident"},"values":[[1635991200,"300257280"],[1635993000,"302428160"],[1.12321,"301727744"]]}]}}`)
    var p Person
    err := json.Unmarshal(b, &p)
    if err != nil {
        fmt.Println(err)
    }

    wmd := p.Data.Values[0]["values"]

    fmt.Println(wmd)

    list := wmd.([]interface{})
    //sum := float64(0)
    for _, v := range list {
        value := v.([]interface{})
        for _, v := range value {
            switch data := v.(type) {
            case float64:
                new := int64(data)
                fmt.Printf("k is %d\n", new)
            case string:
                new1, _ := strconv.Atoi(data)
                fmt.Println("v is :", new1)
            }
        }
    }
}

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

988 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传