go 的 `json.marshal` 只能序列化导出(首字母大写)的结构体字段,小写开头的字段默认不可见,导致序列化结果为空对象 `{}`。
在 Go 语言中,JSON 序列化依赖于反射机制,而反射仅能访问 已导出(exported)字段——即字段名首字母必须为大写。你提供的代码中,Configitem 和 GuiConfig 的所有字段均以小写字母开头(如 local_address、configs),因此 encoding/json 包在序列化时完全忽略它们,最终输出空 JSON 对象 {}。
✅ 正确做法:将结构体字段改为导出字段(首字母大写),并推荐添加 JSON 标签以控制键名:
type Configitem struct {
LocalAddress string `json:"local_address"`
LocalPort int `json:"local_port"`
Method string `json:"method"`
Password string `json:"password"`
Server string `json:"server"`
ServerPort string `json:"server_port"`
Timeout int `json:"timeout"`
}
type GuiConfig struct {
Configs []*Configitem `json:"configs"`
Index int `json:"index"`
}修改后完整可运行示例:
package main
import (
"encoding/json"
"fmt"
)
type Configitem struct {
LocalAddress string `json:"local_address"`
LocalPort int `json:"local_port"`
Method string `json:"method"`
Password string `json:"password"`
Server string `json:"server"`
ServerPort string `json:"server_port"`
Timeout int `json:"timeout"`
}
type GuiConfig stru
ct {
Configs []*Configitem `json:"configs"`
Index int `json:"index"`
}
func main() {
item1 := &Configitem{
LocalAddress: "eouoeu",
LocalPort: 111,
Method: "eoeoue",
Password: "ouoeu",
Server: "oeuoeu",
ServerPort: "qoeueo",
Timeout: 3333,
}
config1 := &GuiConfig{
Index: 1,
Configs: []*Configitem{item1},
}
data, err := json.Marshal(config1)
if err != nil {
panic(err)
}
fmt.Println(string(data))
// 输出:{"configs":[{"local_address":"eouoeu","local_port":111,"method":"eoeoue","password":"ouoeu","server":"oeuoeu","server_port":"qoeueo","timeout":3333}],"index":1}
}⚠️ 注意事项:
总结:Go 的 JSON 序列化严格遵循包可见性规则。“小写 = 私有 = 不可序列化” 是初学者常见陷阱。养成结构体字段首字母大写 + 显式 JSON 标签的习惯,是编写健壮序列化逻辑的基础。
# word
# js
# git
# json
# go
# 编码
# ai
# igs
# 封装
# 结构体
# 接口
# 对象
# 序列化
# 首字母
# 字段名
# 可在
# 自定义
# 不支持
# 但又
# 报错
# 仅能
# 跳过
相关文章:
广州建站公司哪家好?十大优质服务商推荐
山东云建站价格为何差异显著?
建站之星北京办公室:智能建站系统与小程序生成方案解析
建站之星如何配置系统实现高效建站?
定制建站价位费用解析与套餐推荐全攻略
佛山网站制作系统,佛山企业变更地址网上办理步骤?
常州企业网站制作公司,全国继续教育网怎么登录?
如何快速建站并高效导出源代码?
如何通过NAT技术实现内网高效建站?
c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】
已有域名和空间如何搭建网站?
建站主机数据库如何配置才能提升网站性能?
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
C++时间戳转换成日期时间的步骤和示例代码
岳西云建站教程与模板下载_一站式快速建站系统操作指南
如何选择高效响应式自助建站源码系统?
网站设计制作企业有哪些,抖音官网主页怎么设置?
在线制作视频网站免费,都有哪些好的动漫网站?
C++中引用和指针有什么区别?(代码说明)
制作农业网站的软件,比较好的农业网站推荐一下?
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
如何快速打造个性化非模板自助建站?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
如何用狗爹虚拟主机快速搭建网站?
如何自定义建站之星模板颜色并下载新样式?
Android使用GridView实现日历的简单功能
,怎么用自己头像做动态表情包?
天津个人网站制作公司,天津网约车驾驶员从业资格证官网?
c# 在高并发场景下,委托和接口调用的性能对比
建站之星多图banner生成与模板自定义指南
网站制作费用多少钱,一个网站的运营,需要哪些费用?
如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法
如何选择美橙互联多站合一建站方案?
建站之星伪静态规则如何设置?
建站之星CMS五站合一模板配置与SEO优化指南
北京的网站制作公司有哪些,哪个视频网站最好?
深圳网站制作培训,深圳哪些招聘网站比较好?
广州商城建站系统开发成本与周期如何控制?
如何用IIS7快速搭建并优化网站站点?
Python如何创建带属性的XML节点
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
如何在Tomcat中配置并部署网站项目?
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
小型网站建站如何选择虚拟主机?
建站上传速度慢?如何优化加速网站加载效率?
建站之星如何快速生成多端适配网站?
网站制作企业,网站的banner和导航栏是指什么?
大同网页,大同瑞慈医院官网?
电商网站制作公司有哪些,1688网是什么意思?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
*请认真填写需求信息,我们会在24小时内与您取得联系。