结构的Json marshal映射导致空对象

时间:2016-01-14 18:01:40

标签: go

我定义了一个简单的对象:

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

1 个答案:

答案 0 :(得分:3)

您已定义json:"href"两次:

type Link struct {
    Href  string `json:"href"`
    Title string `json:"href,omitempty"`
}

将第二个更改为json:"title"后,它可以正常运行:https://play.golang.org/p/uEbyqtHYF8