json解析对应的value为null_解决golang json解析出现值为空的问题

本文讲述了在Golang中使用json.Unmarshal解析JSON时遇到值为空的问题,特别是涉及结构体嵌套和数据类型匹配时。通过示例代码展示了问题的产生原因,即数据类型和结构体字段大小写不匹配。解决方案是在结构体字段后添加tag指定JSON键名,确保大小写匹配或忽略大小写。
摘要由CSDN通过智能技术生成

我是通过beego框架,将请求过来的json进行解析,并将值保存在结构体中

--------------------1---------------------

request := UpdateCommentRequestData{}

req := common.Request{Data: request}

err := json.Unmarshal(controller.Ctx.Input.RequestBody, &req)

------------------------------------------

其中 UpdateCommentRequestData的结构是这样的

type UpdateCommentRequestData struct {

Id []string `json:"id"`

}

common.request的结构是这样的

type Request struct {

UserId uint64 `json:"userId,string"`

Data interface{} `json:"data"`

}

我使用1中的代码进行解析,发现request.Id的值是空的,但是传来的json是存在Id值的,当时一头雾水,就不断在日志中打印,后来定位到是数据类型存在问题,

在1中的代码里面,Data字段传的是request的值,是值的拷贝,也就是说,json解析后的数据并不是赋值到reques中,所以使用request.Id并不会取到值,

如果将代码改成这样,再使用request.Id就可以取到值了

req := common.Request{Data: request},

补充:golang Unmarshal拿不全数据问题

说明:这个问题出现在后端调用json.Unmarshal方法去解析数据库中存的数据时,解析出来的结果中只能拿到部分数据,json格式经检查后正确无误,同时也没有字段名出错等低级错误。

首先来看要解析后的go结构体

type ParamConfig struct {

//标识Id

Id string<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值