As Zeke Lu suggested use ShouldBindBodyWith(¶m, binding.JSON) instead. I had a similar problem where I had to bind json twice, first in authorization layer, then the final context layer. I used ShouldBindJSON, and it returned EOF.