gpt4 book ai didi

json - Go - JSON解码器没有初始化我的结构

转载 作者:IT王子 更新时间:2023-10-29 01:51:14 28 4
gpt4 key购买 nike

我正在尝试解码通过 http.Get 检索到的一些 JSON。但是,当我检查用 fmt.Println 初始化的结构时,它们总是空的。

我怀疑这是因为我的结构的结构与返回的 JSON 不一致,但我不确定如何修复它。总的来说,我不太确定 decoder有效。

这是 JSON:

{
"response":[
{
"list": {
"category":"(noun)",
"synonyms":"histrion|player|thespian|role player|performer|performing artist"
}
},
{
"list": {
"category":"(noun)",
"synonyms":"doer|worker|person|individual|someone|somebody|mortal|soul"
}
}
]
}

这是我到目前为止尝试过的:

type SynonymResponse struct {
lists []SynonymList
}

type SynonymList struct {
category string
synonyms string
}

var synonyms SynonymResponse;
dec := json.NewDecoder(response.Body)
err := dec.Decode(&synonyms)
if err != nil {
log.Fatal(err)
}
fmt.Println(synonyms)

编辑:根据@Leo 的回答和@JimB 的提示,我的尝试存在两个问题。下面是正确的结构集,尽管正如 Leo 指出的那样,这将是空的:

type SynonymResponses struct {
resp []SynonymResponse
}

type SynonymResponse struct {
listo SynonymList
}

type SynonymList struct {
cat string
syns string
}

最佳答案

为了让解码器获取您的 JSON,必须导出结构中的字段。

这意味着您需要将字段名称大写。如果您对字段进行自定义命名 -> json 转换,则可以将 json 标记添加到您的结构中。

这将解决您的问题:

type SynonymResponse struct {
Lists []SynonymList `json:"response"`
}

type SynonymList struct {
Category string `json:"category"`
Synonyms string `json:"synonyms"`
}

关于json - Go - JSON解码器没有初始化我的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34696852/

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