踩了大坑 : go json.Marshal时,结构体字段需要大写

本文探讨了Go语言中结构体字段的访问权限问题。详细解释了如何通过调整结构体字段的首字母大小写来控制其可见性,从而正确实现JSON序列化。

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

go中根据首字母的大小写来确定可以访问的权限。如果首字母大写,作用域则可以被其他的包访问;如果首字母小写,作用域则只能在本包中使用。包括接口、类型、函数和变量等。

可以简单的理解成,首字母大写是公有的,首字母小写是私有的

出现问题

需要将json数据序列化为byte,结果序列化以后,对应的属性都为空。

json数据是由结构体进行反序列化过来的,因为就在本包进行调用,所以将结构体参数的首字母改为了小写

问题原因

序列化时由于需要调用结构体中的属性,但是我的结构体开头字母是小写的,也就是private权限,作用域只有在结构体内和该结构体的方法中,在外部无法访问。

解决方案

如果想使用json.Marshal方法来转结构体,那就要把结构体中的属性名的首字母大写(public),我将结构体中属性首字母全部大写以后,问题解决。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杰哥的技术杂货铺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值