使用 golang 返回一个空数组而不是 null 用于使用 gin 返回的 json

所以我有一个结构:


type ProductConstructed struct {

    Name string `json:"Name"`

    BrandMedals []string `json:"BRAND_MEDALS"`

}

当我用杜松子酒返回我的对象时:


func  contructproduct(c *gin.Context) {

    var response ProductConstructed 

    response.Name = "toto"


    c.JSON(200, response)

}


func main() {

    var err error

    if err != nil {

        panic(err)

    }

    //gin.SetMode(gin.ReleaseMode)

    r := gin.Default()

    r.POST("/constructProductGo/v1/constructProduct", contructproduct)

    r.Run(":8200") // listen and serve on 0.0.0.0:8080

}

它返回我:

无效的

代替

[]

如何返回空数组?

问候


海绵宝宝撒
浏览 675回答 2
2回答

qq_花开花谢_0

所以解决方案是用以下方法初始化它:productConstructed.BrandMedals = make([]string, 0)

翻翻过去那场雪

只是为了阐明上述解决方案为何有效:slice1已声明,但未定义。尚未为其分配任何变量,它等于nil. 序列化后,它将返回null.slice2被声明和定义。它等于一个空切片,而不是nil. 序列化后,它将返回[].var slice1 []string  // nil slice valueslice2 := []string{} // non-nil but zero-lengthjson1, _ := json.Marshal(slice1)json2, _ := json.Marshal(slice2)fmt.Printf("%s\n", json1) // nullfmt.Printf("%s\n", json2) // []fmt.Println(slice1 == nil) // truefmt.Println(slice2 == nil) // false去游乐场:https://play.golang.org/p/m9YEQYpJLdj
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go