首页 > 解决方案 > 动态添加绑定所需标签 go-gin

问题描述

type Person struct {
    Name string `json:"name"`
    Age int `json:"age"`
}

有没有办法添加

binding:"required"

要不json:"name"硬编码吗?

标签: jsongobindinggo-gin

解决方案


也许您可以在句柄函数中动态覆盖结构,而原始 Person 结构保持不变。像这样 :

func HandleSomething(c *gin.Context) {

    type person struct {
        Person 
        Name string `json:"name" binding:"required"`
     }

     var p person
    if err = c.ShouldBind(&p); err != nil {
        err = errors.Wrap(util.ErrParams, err.Error())
       return
    }
    response = util.BuildResponse(middleware.PassCode, "Success", list)
    c.JSON(http.StatusOK, response)
    return
}


推荐阅读