英文:
Json marshal map of structs results in empty object
问题
我有一个简单的对象定义:
type Link struct {
Href string `json:"href"`
Title string `json:"href,omitempty"`
}
type Foo struct {
Links map[string]Link `json:"_links"`
}
foo := new(Foo)
foo.Links = make(map[string]Link, 0)
foo.Links["self"] = Link{Href: "/href"}
将其编组为JSON后,我期望得到:
{
"_links": {
"self": {
"href": "/href"
}
}
}
但实际上我得到的是:
{
"_links": {
"self": {}
}
}
有任何想法为什么会这样吗?这里是一个完整的示例:
https://play.golang.org/p/3RA3Mrx3pt
英文:
I have a simple object defined:
type Link struct {
Href string `json:"href"`
Title string `json:"href,omitempty"`
}
type Foo struct {
Links map[string]Link `json:"_links"`
}
foo := new(Foo)
foo.Links = make(map[string]Link, 0)
foo.Links["self"] = Link{Href: "/href"}
After marshalling it to JSON, I'd expect:
{
"_links": {
"self": {
"href": "/href"
}
}
}
But instead I get:
{
"_links": {
"self": {}
}
}
Any idea why? Here's a full example:
答案1
得分: 4
你已经两次定义了json:"href"
:
type Link struct {
Href string `json:"href"`
Title string `json:"href,omitempty"`
}
将第二次更改为json:"title"
后,它可以正常工作:https://play.golang.org/p/uEbyqtHYF8。
英文:
You've defined json:"href"
twice:
type Link struct {
Href string `json:"href"`
Title string `json:"href,omitempty"`
}
After changing the second to json:"title"
it works: https://play.golang.org/p/uEbyqtHYF8.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论