Как получить конкретный параметр из опубликованного JSON в Gin? - PullRequest
0 голосов
/ 27 июня 2019

Мне нужно получить один параметр из опубликованного 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 имеют много других полей, включая цена

{
   ...other fields
   price: 30
}

Но это не работает. Я думаю, это потому, что я дважды связываюсь. Как мне добиться успеха в связывании нескольких?

Спасибо

1 Ответ

1 голос
/ 27 июня 2019

Попробуйте использовать ShouldBindJSON.BindJSON читает тело, поэтому мы находимся в EOF, если контекстное тело читается несколько раз.

ShouldBindJSON сохраняет тело запроса в контексте и повторно использует его при повторном вызове.

...