如何在golang中解析请求中的json? [关闭]
Posted
技术标签:
【中文标题】如何在golang中解析请求中的json? [关闭]【英文标题】:how to parse the json in the request in golang? [closed] 【发布时间】:2021-07-11 08:47:48 【问题描述】:数据: 仅提取典型结构
"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】: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.Fatal
,只有当err
的值不是nil
时,甚至可能不调用,也许您应该退出处理程序,但这由您决定。
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)
【讨论】:
以上是关于如何在golang中解析请求中的json? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章