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

Posted 杰哥的技术杂货铺

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了踩了大坑 : go json.Marshal时,结构体字段需要大写相关的知识,希望对你有一定的参考价值。

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

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

出现问题

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

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

问题原因

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

解决方案

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

以上是关于踩了大坑 : go json.Marshal时,结构体字段需要大写的主要内容,如果未能解决你的问题,请参考以下文章

踩了大坑:https 证书访问错乱

2022-08-11:以下go语言代码输出什么?A:panic;B:编译错误;C:json marshal 报错;D:null;E:nil。 package main import ( “e

踩了大坑:wordpress后台 无法将上传的文件移动至wp-content

json.Marshal(): json: 为 msgraph.Application 类型调用 MarshalJSON 时出错

go语言中 json转换--nil

如何使用 Go 漂亮地打印 JSON?