百度已收录

GetRawData()

封装,过滤数据,仅接收指定json键:

//传入上下文、泛型,传出error错误
func bind_json(c *gin.Context, obj any) (err error) {

    //将获取到的raw原始参数赋值给body,丢弃error
    body, _ := c.GetRawData()
    //获取Hader,赋值给ContenType
    ContentType := c.GetHeader("content-type")

    switch ContentType {
    case "application/json":
    
    //使用json.Unmarshal()将传来的json字符串转为结构体,error结果返给err
        err = json.Unmarshal(body, &obj)
        
        //如果err不是空值,证明报错,return err,如果为空,不做处理
        if err != nil {
            return err
        }
    }
    return nil
}

raw:

func _index_raw(c *gin.Context) {

    //结构体
    type User struct {
        User string `json:"user"`
        Age  int    `json:"age"`
    }
    
    //实例化结构体
    var user User
    //调用封装
    err := bind_json(c, &user)
    //处理报错
    if err != nil {
        fmt.Println(err.Error())
    }
    //控制台调试输出user检验数据
    fmt.Println(user)
}

如果未接收到指定键值,返回该类型默认值

本人代码水平一般,如有错误请指正,感谢。