gpt4 book ai didi

json - 我的结构未正确格式化为 JSON

转载 作者:行者123 更新时间:2023-12-01 22:42:14 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





json.Marshal(struct) returns "{}"

(3 个回答)


2年前关闭。




首先,从这个结构构建一个数组,作为最终 JSON 结果的一部分:

type Part struct {
Id string
Username string
Score string
}

填充数组并获得总分:
var partArr []Part
var allscores decimal.Decimal
for _, result := range users {

partArr = append(partArr, Part{
id: string(result.id),
username: fmt.Sprintf("%s", result.username),
quantity: fmt.Sprintf("%s", result.score),
})
allscores = allscores+result.score
}

然后将其添加到另一个结构(ToSend):
type ToSend struct {
Parts []Part
Scores decimal.Decimal
}


toSend := &ToSend{
Parts: partArr,
Scores: allscores,
}

我们将其格式化为 JSON:
toJson, err := json.Marshal(ToSend)
if err != nil {
log.Fatal("Cannot encode to JSON ", err)
}

但结果不是等待的:
{"Parts":[{},{},{},{},{}], "Scores":"1850"}

看来 Parts字段包含空内容!这不准确,因为如果我将它打印在一个字符串中,我会得到其中的真实信息(+ 分数计算正确 - 这意味着信息在那里)。

请问我做错了什么?

最佳答案

您编写的代码正在编码一个空结构:

toJson, err := json.Marshal(ToSend)

你应该编码你的对象:
toJson, err := json.Marshal(toSend) // not json.Marshal(ToSend)
if err != nil {
log.Fatal("Cannot encode to JSON ", err)
}

这并不能解释为什么要填充分数,但是如果不知道 decimal 是什么就很难推测。图书馆在做。

关于json - 我的结构未正确格式化为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58332122/

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