与嵌套负载的 JSON 绑定
短信预约 -IT技能 免费直播动态提醒
你在学习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知识!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341