gpt4 book ai didi

json - Golang 将 json 映射到结构

转载 作者:IT王子 更新时间:2023-10-29 01:49:15 26 4
gpt4 key购买 nike

我有一个 JSON,我需要使用结构从中提取数据:

我正在尝试将其映射到以下结构:

type Message struct {
Name string `json:"name"`
Values []struct {
Value int `json:"value,omitempty"`
Comments int `json:"comments,omitempty"`
Likes int `json:"likes,omitempty"`
Shares int `json:"shares,omitempty"`
} `json:"values"`
}

这是我的 json:

[{
"name": "organic_impressions_unique",
"values": [{
"value": 8288
}]
}, {
"name": "post_story_actions_by_type",
"values": [{
"shares": 234,
"comments": 838,
"likes": 8768
}]
}]

我的问题是:

  1. 如何构造我的结构?
  2. 如何阅读名称、值和注释?

到目前为止,我无法使用以下代码读取数据:

msg := []Message{}
getJson("https://json.url", msg)
println(msg[0])

getJson 函数:

func getJson(url string, target interface{}) error {
r, err := myClient.Get(url)
if err != nil {
return err
}
defer r.Body.Close()

return json.NewDecoder(r.Body).Decode(target)
}

最佳答案

您的结构是正确的。您所需要的只是来使用json.Unmarshal具有正确目标对象的函数,它是 Message 实例的 slice :[]Message{}

Correct unmarshaling :

type Message struct {
Name string `json:"name"`
Values []struct {
Value int `json:"value,omitempty"`
Comments int `json:"comments,omitempty"`
Likes int `json:"likes,omitempty"`
Shares int `json:"shares,omitempty"`
} `json:"values"`
}

func main() {
input := []byte(`
[{
"name": "organic_impressions_unique",
"values": [{
"value": 8288
}]
}, {
"name": "post_story_actions_by_type",
"values": [{
"shares": 234,
"comments": 838,
"likes": 8768
}]
}]
`)

messages := []Message{} // Slice of Message instances
json.Unmarshal(input, &messages)
fmt.Println(messages)
}

关于json - Golang 将 json 映射到结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42136765/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com