在json中发送null

type JobTitles struct {

    Titles []string `json:"titles"`

}


chiefTitles := []string{"CEO", "CFO", null, "CMO"}


jsonOut := JobTitles{chiefTitles}

在上面的代码中,我希望能够将null作为我的 json 字符串数组中的值之一发送。但是,上面的内容不会编译,如果我给null添加双引号,它就会变成一个字符串而不是 null 值。


如何在 GO 中的 json 响应中发送null?


这篇文章似乎有帮助,但看起来与我的问题相反。


BIG阳
浏览 466回答 2
2回答

阿波罗的战车

为了用值 'null' 表示该类型,它必须是一个指针。问题不在于您不能使用 null,而是字符串不能具有该值。这是我在操场上制作的一个简单示例;https://play.golang.org/p/SXO5sBl2mRpackage mainimport "fmt"import "encoding/json"type Test struct {    A *string    B *string}func main() {        s := "Something"        t := Test{A:&s, B:nil}        b, err := json.Marshal(t)        if err != nil {            fmt.Println(err)        }    fmt.Println(string(b))}正如 DaveC 提到的,使用指针制造者初始化有点麻烦,但你可以使用我上面提到的相同类型的构造;声明一个字符串,&在复合文字中使用该字符串。

喵喔喔

您将不得不*string改用并创建一个辅助函数以使其更容易,大致如下:func main() {    chiefTitles := []*string{sP("CEO"), sP("CFO"), nil, sP("CMO")}    b, _ := json.Marshal(JobTitles{chiefTitles})    fmt.Println(string(b))}type JobTitles struct {    Titles []*string `json:"titles"`}func sP(s string) *string {    return &s}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go