猿问

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

数据:

仅提取典型结构


{

  "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结构?


Qyouu
浏览 107回答 1
1回答

qq_遁去的一_1

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.Fatalerrnilfunc 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)    }}
随时随地看视频慕课网APP

相关分类

Go
我要回答