Files
nCovTrack-Backend/handler/utils.go
2022-02-27 16:36:33 +08:00

49 lines
1.0 KiB
Go

package handler
import (
"encoding/json"
"github.com/gin-gonic/gin"
)
// bindJson bind body as a map
func bindJson(c *gin.Context) map[string]interface{} {
var jsonMap map[string]interface{}
err := c.ShouldBindJSON(&jsonMap)
if err != nil {
var requestBody []byte
_, err := c.Request.Body.Read(requestBody)
if err != nil {
panic(err)
}
RequestErr(c, requestBody)
return nil
}
if jsonMap == nil || len(jsonMap) == 0 {
RequestErr(c, map[string]interface{}{"Body": nil})
return nil
}
return jsonMap
}
// bindJsonStruct bind json as a struct, and convert to map
func bindJsonStruct[T any](c *gin.Context) map[string]interface{} {
var bindObj T
err := c.ShouldBind(&bindObj)
if err != nil {
var requestBody []byte
_, err := c.Request.Body.Read(requestBody)
if err != nil {
panic(err)
}
RequestErr(c, requestBody)
return nil
}
jsonStr, _ := json.Marshal(bindObj)
var jsonMap map[string]interface{}
_ = json.Unmarshal(jsonStr, &jsonMap)
if jsonMap == nil || len(jsonMap) == 0 {
return nil
}
return jsonMap
}