为了账号安全,请及时绑定邮箱和手机立即绑定

如何在golang中解析请求中的json?

如何在golang中解析请求中的json?

Go
Qyouu 2022-08-24 16:58:25
数据:仅提取典型结构{  "logs": [{      "points": [        [30402984,1618566621000],        [32146400,1618566636000]      ],      "tags.metric": {"name": "cpu_percent"}    }]}法典:func postHandle(w http.ResponseWriter, r *http.Request) {    var contentStruct ContentStruct    err := json.NewDecoder(r.Body).Decode(&contentStruct)    log.Fatal(err)    fmt.Println(contentStruct.TagsMetric)}问题1:如何设计结构?问题2:如何打印和查看未知的json结构?
查看完整描述

1 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

type ContentStruct struct {

    Logs []struct{

        Points [][]int64 `json:"points"`

        TagsMetric struct {

            Name string `json:"name"`

        } `json:"tags.metric"`

    } `json:"logs"`

}

unknown, err := ioutil.ReadAll(r.Body)

if err != nil {

    log.Println(err)

    return

}

fmt.Println(string(unknown))

请注意,您的处理程序会终止程序,无论您是否因解码 json 而收到错误。您不应该在每种情况下都调用,只有当值不是时,甚至可能不是这样,也许您应该退出处理程序,但这由您决定。log.Fatalerrnil


func postHandle(w http.ResponseWriter, r *http.Request) {

    var contentStruct ContentStruct

    if err := json.NewDecoder(r.Body).Decode(&contentStruct); err != nil {

        log.Fatal(err)

    }

    if len(contentStruct.Logs) > 0 {

        fmt.Println(contentStruct.Logs[0].TagsMetric)

    }

}


查看完整回答
反对 回复 2022-08-24
  • 1 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信