JSON对象序列化后的切片的键名需要小写化。

huangapple go评论78阅读模式
英文:

Key name of of marshaled slice of JSON objects needs to be lower case

问题

你可以使用结构体的标签(tag)来指定JSON输出的字段名称。在你的代码中,你可以在Id字段上添加一个json标签,并将其值设置为"id",如下所示:

type Topic struct {
    Id string `json:"id"`
}

这样,当你使用json.Marshal函数将topics结构体切片转换为JSON字符串时,Id字段的名称将会被转换为小写的"id"

修改后的代码如下:

type Topic struct {
    Id string `json:"id"`
}

topics := []Topic{
    {Id: "some identifier"},
    {Id: "some other identifier"},
}

tops, err := json.Marshal(topics)
if err != nil {
    fmt.Println("got an error", err)
}

fmt.Println(string(tops))

输出结果将会是:

[
    {"id":"some identifier"},
    {"id":"some other identifier"}
]

这样就满足了你所需的小写的JSON输出格式。希望对你有帮助!

英文:

How do I make the key name Id lower case in the marshaled JSON output for this code?

    type Topic struct {
        Id string
    }

    topics := []Topic{
        {Id: "some identifier"},
        {Id: "some other identifier"},
    }

    tops, err := json.Marshal(topics)
    if err != nil {
        fmt.Println("got an error", err)
    }

    fmt.Println(string(tops))

Returns:

[
    {"Id":"some identifier"},
    {"Id":"some other identifier"}
]

But the API I'm using requires lower case, like:

[
    {"id":"some identifier"},
    {"id":"some other identifier"}
]

I am still pretty new to golang, so any direction is appreciated!

答案1

得分: 2

你刚刚设置了json结构标签。

type Topic struct {
    Id string `json:"id"`
}
英文:

You just set the json struct tag

type Topic struct {
    Id string `json:"id"`
}

huangapple
  • 本文由 发表于 2021年10月6日 02:33:23
  • 转载请务必保留本文链接:https://go.coder-hub.com/69455591.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定