GoLang JSON Marshal omitempty与非简单类型 - 可能避免指针?

时间:2017-06-22 08:00:22

标签: json pointers go

以下代码是解释。我可以使用非简单类型的唯一方法是使该类型成为指针。

通过不使用指针,是否有替代解决方案?

代码不工作:

type Foo struct {
    Bar Bar `json:"bar,omitempty"`
}

type Bar struct {
    Baz string `json:"baz"`
}

func main() {

    foo := Foo{}

    jsonBytes, _ := json.Marshal(foo)

    fmt.Printf("%s\n", jsonBytes)
}

输出:{"bar":{"baz":""}}

代码工作,但不是我想要的:

type Foo struct {
    Bar *Bar `json:"bar,omitempty"`
}

type Bar struct {
    Baz string `json:"baz"`
}

func main() {

    foo := Foo{}

    jsonBytes, _ := json.Marshal(foo)

    fmt.Printf("%s\n", jsonBytes)
}

输出:{}

1 个答案:

答案 0 :(得分:1)

  

通过不使用指针,是否有替代解决方案?

没有