Search code examples
restgogo-gin

How to read snake case JSON request body in Go using Gin-Gonic


I am using gin-gonic to create my first Go rest API server.

My User struct is as follows

type User struct {
    FirstName string `json: "first_name"`
}

I have the following route defined in my code

route.POST("/test", func(c *gin.Context) {

        var user request_parameters.User
        c.BindJSON(&user)

        //some code here

        c.JSON(http.StatusOK, token)
})

My POST request body is as follows

{
    "first_name" : "James Bond"
}

The value of user.FirstName is "" in this case. But when I post my request body as

{
    "firstName" : "James Bond"
}

The value of user.FirstName is "James Bond".

How do I map the snake case variable "first_name" from the JSON request body to the corresponding variable in the struct? Am I missing something?


Solution

  • You have a typo (a space in json: "first_name").

    It should be:

    type User struct {
        FirstName string `json:"first_name"`
    }