【问题标题】:Add binding required tag dynamically go-gin动态添加绑定所需标签 go-gin
【发布时间】:2021-01-04 01:44:57
【问题描述】:
type Person struct {
    Name string `json:"name"`
    Age int `json:"age"`
}

有没有办法添加

binding:"required"

json:"name" 没有硬编码?

【问题讨论】:

  • 不,不是Person类型。但是,您可以使用 reflect 包动态创建一个新的匿名结构,并且可以使用 Person 类型作为“模板”。
  • ... 上面的评论示例:play.golang.org/p/rj_H3lPXtIS

标签: json go binding go-gin


【解决方案1】:

也许您可以动态覆盖您的句柄函数中的结构,并且原始 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
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-20
    • 2012-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    相关资源
    最近更新 更多