如何从Gin中发布的JSON获取特定参数?

时间:2019-06-27 02:06:02

标签: json go gin

我需要从发布的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
}

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

谢谢

1 个答案:

答案 0 :(得分:1)

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

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