登录
首页 >  Golang >  Go问答

Go Template - 移除指定字段

来源:stackoverflow

时间:2024-02-09 21:42:24 300浏览 收藏

一分耕耘,一分收获!既然打开了这篇文章《Go Template - 移除指定字段》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

问题内容

我有以下数据格式:

{"time":"2022-08-24t06:00:00z","duration":0,"level":"ok","data":{"series":[{"name":"gnb_kpi","tags":{"id":"1017","_field":"success_rate%","cluster_id":"ec17-1017","swversion":"6.0"},"columns":["time","_value"],"values":[["2022-08-24t06:00:00z","100"]]}]},"previouslevel":"critical","recoverable":true}

我想从列数组中删除 _time 字段,并类似地从值数组中删除时间戳。我想要的输出是这样的:

{"time":"2022-08-24T06:00:00Z","duration":0,"level":"OK","data":{"series":[{"name":"gnb_kpi","tags":{"ID":"1017","_field":"Success_rate%","cluster_id":"ec17-1017","swVersion":"6.0"},"columns":["_value"],"values":[["100"]]}]},"previousLevel":"CRITICAL","recoverable":true}

正确答案


我使用在线服务JSON-to-Go生成与您的输入相对应的数据结构。它产生了

type autogenerated struct {
    time     time.time `json:"time"`
    duration int       `json:"duration"`
    level    string    `json:"level"`
    data     struct {
        series []struct {
            name string `json:"name"`
            tags struct {
                id        string `json:"id"`
                field     string `json:"_field"`
                clusterid string `json:"cluster_id"`
                swversion string `json:"swversion"`
            } `json:"tags"`
            columns []string        `json:"columns"`
            values  [][]interface{} `json:"values"`
        } `json:"series"`
    } `json:"data"`
    previouslevel string `json:"previouslevel"`
    recoverable   bool   `json:"recoverable"`
}

算法很简单:

  • 将 json 解析为生成的结构
  • 迭代系列
    • 查找time字段在columns中的位置
    • values 中删除相应的数据元素

https://go.dev/play/p/rjnvmdBXCE4

输出是(美化的)

{
  "time": "2022-08-24T06:00:00Z",
  "duration": 0,
  "level": "OK",
  "data": {
    "series": [
      {
        "name": "gnb_kpi",
        "tags": {
          "ID": "1017",
          "_field": "Success_rate%",
          "cluster_id": "ec17-1017",
          "swversion": "6.0"
        },
        "columns": [
          "_value"
        ],
        "values": [
          [
            "100"
          ]
        ]
      }
    ]
  },
  "previousLevel": "CRITICAL",
  "recoverable": true
}

如您所见,没有 time

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>