【问题标题】:How to get specific param from posted JSON in Gin?如何从 Gin 中发布的 JSON 中获取特定参数?
【发布时间】:2019-11-08 23:59:56
【问题描述】:

我需要从发布的 json 中获取一个参数。 而且我不想只为此制作结构。 这是我尝试过的

type NewTask struct {
    Price uint64 `json:"price"`
}

func (pc TaskController) Create(c *gin.Context) {

    var service Service
    if err := c.BindJSON(&service); err != nil {
        log.Println(err) // this works
    }

    var u NewTask
    if err := c.BindJSON(&u); err != nil {
        log.Println(err) // this return EOF error
    }

    fmt.Println(u.Price)
}

请求的 Json 数据有许多其他字段,包括 price

{
   ...other fields
   price: 30
}

但这不起作用。我认为是因为我绑定了两次,我如何才能成功绑定多个?

谢谢

【问题讨论】:

  • 能否分享ShouldBind返回的错误?
  • 我更新了帖子
  • 谢谢,我会测试并让你知道我是否发现了什么
  • 你要绑定多次吗?

标签: json go go-gin


【解决方案1】:

尝试使用ShouldBindJSONBindJSON 正在读取正文,因此如果上下文正文被多次读取,我们将位于 EOF

ShouldBindJSON 将请求体存储到上下文中,并在再次调用时重用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-03
    • 2017-09-19
    相关资源
    最近更新 更多