登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-04-08 19:33:36 358浏览 收藏

哈喽!大家好,很高兴又见面了,我是golang学习网的一名作者,今天由我给大家带来一篇《我的结构未正确格式化为 JSON》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!

问题内容

第一件事是从此结构构建一个数组,作为最终 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》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>