Golang GIN 接收结构体切片(前端对象数组)

发布时间 2023-05-28 14:33:50作者: 李若盛开

想接收前端这样的数据格式:【json数组】

[
    {
        "password": "casso",
        "mobile": "13456789999",
        "nick_name": "go",
        "icon": "地址"
    },
    {
        "password": "casso",
        "mobile": "13456789999",
        "nick_name": "go",
        "icon": "地址"
    }
]

GO代码

//TestUser 创建测试用户
type TestUser struct {
    PassWord string `json:"password" binding:"required"`  // 密码
    Mobile   string `json:"mobile" binding:"required"`    // 电话
    NickName string `json:"nick_name"` // 昵称
    Icon     string `json:"icon"`      // 头像
}
// CreateTeast 创建测试用户
func CreateTeast(c *gin.Context){
    var postData []TestUser
    if err := c.ShouldBind(&postData); err != nil {
        response.ReturnJSON(c, http.StatusOK, statuscode.InvalidParam.Code,statuscode.InvalidParam.Msg, nil)
        return
    }
    // 走到这里,postData 里面就有数据了
}

稍微复杂的数据结构

type Cards struct {
    No    string `json:"no"`
    Local string `json:"local"`
}

type Per struct {
    Name string  `json:"name"`
    Card []Cards `json:"card"`
    Age  int     `json:"age"`
}

// CreateTeast 创建测试用户
func CreateTeast(c *gin.Context) {
    var postData Per
    if err := c.ShouldBind(&postData); err != nil {
        response.ReturnJSON(c, http.StatusOK, statuscode.InvalidParam.Code, statuscode.InvalidParam.Msg, nil)
        return
    }
    // 走到这里,postData 里面就有数据了
}

总结:

  • 最重要的一点是:GIN框架,GET 方法并不能使用ShouldBind等这类方法获取数据,所以还是要按照规范来。