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

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

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

出现问题

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

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

问题原因

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

解决方案

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

猜你喜欢

转载自blog.csdn.net/cljdsc/article/details/127984565