为了账号安全,请及时绑定邮箱和手机立即绑定

在json中发送null

在json中发送null

Go
BIG阳 2021-11-08 10:05:05
type JobTitles struct {    Titles []string `json:"titles"`}chiefTitles := []string{"CEO", "CFO", null, "CMO"}jsonOut := JobTitles{chiefTitles}在上面的代码中,我希望能够将null作为我的 json 字符串数组中的值之一发送。但是,上面的内容不会编译,如果我给null添加双引号,它就会变成一个字符串而不是 null 值。如何在 GO 中的 json 响应中发送null?这篇文章似乎有帮助,但看起来与我的问题相反。
查看完整描述

2 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

为了用值 'null' 表示该类型,它必须是一个指针。问题不在于您不能使用 null,而是字符串不能具有该值。这是我在操场上制作的一个简单示例;https://play.golang.org/p/SXO5sBl2mR


package main


import "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 提到的,使用指针制造者初始化有点麻烦,但你可以使用我上面提到的相同类型的构造;声明一个字符串,&在复合文字中使用该字符串。


查看完整回答
反对 回复 2021-11-08
?
喵喔喔

TA贡献1735条经验 获得超5个赞

您将不得不*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

}


查看完整回答
反对 回复 2021-11-08
  • 2 回答
  • 0 关注
  • 465 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信