你在学习Golang相关的知识吗?本文《与嵌套负载的 JSON 绑定》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!
问题内容我正在使用 go 和 buffalo 开发 api。 接收请求时,可以自动将 json 负载映射到结构:
func myaction(c buffalo.context) error {
u := &user{}
if err := c.bind(u); err != nil {
return err
}
u.name // "ringo"
u.email // "[email protected]"
}
但是,它假设有效负载具有以下形状:
{
"name": "ringo",
"email": "[email protected]"
}
如果由于某种原因,传入的有效负载有一个密钥:
{
"user": {
"name": "Ringo",
"email": "[email protected]"
}
}
绑定不起作用。我找不到如何处理这个案子。 我应该如何处理这个问题?
解决方案
也许您可以使用 map[string]user{}
包装您的结构,这是一个示例:
func myaction(c buffalo.context) error {
u := map[string]user{
"user": user{},
}
if err := c.bind(&u); err != nil {
return err
}
user := u["user"]
user.name // "ringo"
user.email // "[email protected]"
}
在我看来,定义一个结构会是更清晰的解决方案:
type UserObject struct {
User struct {
Email string
Name string
}
}
func MyAction(c buffalo.Context) error {
u := UserObject{}
if err := c.Bind(&u); err != nil {
return err
}
user := u.User
user.Name // "Ringo"
user.Email // "[email protected]"
}
好了,本文到此结束,带大家了解了《与嵌套负载的 JSON 绑定》,希望本文对你有所帮助!关注编程网公众号,给大家分享更多Golang知识!