[gogf/gf]客户端提交过来的json格式的字符串如何转换到结构体啊?

2024-07-09 843 views
9

我如何将客户端提交map类型的参数内容绑定到我想要的request里面的内容里啊?这个问题干了四个小时了都没干出来,求大神指点一下,谢谢! 20201221-1 20201221-2 20201221-3 我的action代码是:

func (action *Action) Save(r *ghttp.Request){
request:=new(digital.Request)
a:=gconv.Bytes(r.GetQueryMap()["data"])
glog.Printf("%T",a)
glog.Println(a)
err:=gjson.DecodeTo(a,&request)
if err!=nil{
base.Fail(r,"error")
}
glog.Println(request)
}

我的service里的结构体为

type Request struct{
digital.Entity
Id int `form:"id" json:"id"`
ProjectId string `form:"projectId" json:"projectId"`
CompleteScore float64 `form:"completeScore" json:"completeScore"`
}

回答

7
type Request  struct {
    Id          int     `json:"idx"`         
    ProjectId   string  `json:"projectId"`
}

func (action *Action) Save(r *ghttp.Request){
    var data *Request
    if err := r.Parse(&data); err != nil {
        glog.Println("解析失败")
    }
    else
    {
        glog.Println("解析成功")
    }
}

有不懂的可以先看看文档和demo,里面都有具体实现.

9

@francisxie 我就是按照官网上和你发给我的例子测试的,结果还是没有值呢 2020122-3 20201222-1 20201222-2 20201222-4

确实提示解析到成功了,但是没有值!

5
type Request  struct {
    Id          int     `json:"idx"`         
    ProjectId   string  `json:"projectId"`
}

func (action *Action) Save(r *ghttp.Request){
    var data *Request
    if err := r.Parse(&data); err != nil {
        glog.Println("解析失败")
    }
    else
    {
        glog.Println(data)
    }
}
6

console 没有打印出来?

0

你使用的什么工具发送的?用调试模式看看局构体体里面属性存的什么值.

0

@joyoes 给个完整可运行代码。

9

@gqcn 我查出问题了,是客户端json格式的问题!不关服务器端的事情!

4

@gqcn 我本来都非常希望能加入团队,贡献点力量,只是我的工作实在太忙太忙了!白天要开会,晚上要加班干业务!真的好羡慕你们专研技术!

9

时间都是挤出来的,只要你感兴趣就不需要找理由。 -- 现在是凌晨02:00

4

@gqcn 好的!我尽量把时间安排好!