如何解决如何检测请求正文中的 json 是否为键或未给出键的空值
我正在使用 Go gin 框架创建 API 服务器。现在我尝试为 PATCH
端点添加 /users
操作。 PATCH
操作接收 json 请求正文中的部分属性并更新 User 模型的属性。在这种情况下,未出现在 json body 中的属性将保持原样。
我使用 ShouldBindJSON
方法解析 json 主体,它作为 PatchUserRequest
结构的实例给出。由于 PatchUserRequest
的属性是指针类型,如果键不在正文中,则属性设置为 nil
。在其他情况下,该属性可以在键中具有 null
值。
问题是未给出如何检测请求正文中的 json 是否为键或键的空值。
email key 值为空
{
"name": "foo","email": null
}
未提供电子邮件密钥
{
"name": "foo"
}
映射到json的处理函数和结构体如下。
type PatchUserRequest struct {
Name *string `json:"name"`
Email *string `json:"email"`
}
func (h *userHandler) HandleUserPatch(c *gin.Context) {
userID := c.Param("userid")
var json PatchUserRequest
if err := c.ShouldBindJSON(&json); err != nil {
c.JSON(http.StatusBadRequest,gin.H{"error": err.Error()})
return
}
// Subsequent process
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。