1. Json 数据解析和绑定

  • 客户端传参,后端接收并解析到结构体
  1. package main
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "net/http"
  5. )
  6. // 定义接收数据的结构体
  7. type Login struct {
  8. // binding:"required"修饰的字段,若接收为空值,则报错,是必须字段
  9. User string `form:"username" json:"user" uri:"user" xml:"user" binding:"required"`
  10. Pssword string `form:"password" json:"password" uri:"password" xml:"password" binding:"required"`
  11. }
  12. func main() {
  13. // 1.创建路由
  14. // 默认使用了2个中间件Logger(), Recovery()
  15. r := gin.Default()
  16. // JSON绑定
  17. r.POST("loginJSON", func(c *gin.Context) {
  18. // 声明接收的变量
  19. var json Login
  20. // 将request的body中的数据,自动按照json格式解析到结构体
  21. if err := c.ShouldBindJSON(&json); err != nil {
  22. // 返回错误信息
  23. // gin.H封装了生成json数据的工具
  24. c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
  25. return
  26. }
  27. // 判断用户名密码是否正确
  28. if json.User != "root" || json.Pssword != "admin" {
  29. c.JSON(http.StatusBadRequest, gin.H{"status": "304"})
  30. return
  31. }
  32. c.JSON(http.StatusOK, gin.H{"status": "200"})
  33. })
  34. r.Run(":8000")
  35. }

效果演示:

Json 数据解析和绑定 - 图1