golang json解析出现值为空

本文探讨了使用Beego框架处理JSON数据时遇到的问题:解析后的数据未正确映射到结构体成员上。作者详细解释了解决这一问题的方法,即确保解析过程中目标结构体变量被正确引用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    我是通过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},


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值