go 的 `json.marshal` 只能序列化首字母大写的导出字段,小写开头的结构体字段(如 `local_address`)属于未导出成员,会被忽略,导致输出空对象 `{}`。解决方法是将字段名首字母大写并添加 json 标签,或自定义 `marshaljson` 方法。
在 Go 语言中,JSON 序列化依赖于 字段的可见性(exported/unexported),而非字段是否被显式标记。encoding/json 包运行在独立包内,它无法访问非导出(即小写开头)的结构体字段——这是 Go 的基础封装机制决定的。因此,原始代码中所有字段(如 local_address, local_port 等)均为小写开头,json.Marshal 对它们“视而不见”,最终只得到一个空 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 struct {
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}
}⚠️ 注意事项:
),否则即使加了 json 标签也无效;总结:Go 的 JSON 序列化严格遵循“导出即可见”原则。养成首字母大写 + 显式 json 标签的习惯,是编写健壮、可维护序列化代码的关键实践。
# word
# js
# git
# json
# go
# ai
# 解决方法
# igs
# 封装
# Error
# 结构体
# 对象
# 序列化
# 首字母
# 字段名
# 自定义
# 这是
# 键名
# 均为
# 而非
# 视而不见
相关文章:
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
建站之星后台密码遗忘?如何快速找回?
建站之星如何优化SEO以实现高效排名?
如何通过.red域名打造高辨识度品牌网站?
如何快速搭建高效WAP手机网站?
建站主机功能解析:服务器选择与快速搭建指南
学校建站服务器如何选型才能满足性能需求?
代购小票制作网站有哪些,购物小票的简要说明?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
建站主机如何选?性能与价格怎样平衡?
北京的网站制作公司有哪些,哪个视频网站最好?
建站之星上传入口如何快速找到?
内网网站制作软件,内网的网站如何发布到外网?
如何选择美橙互联多站合一建站方案?
如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?
Android滚轮选择时间控件使用详解
定制建站流程步骤详解:一站式方案设计与开发指南
公司门户网站制作流程,华为官网怎么做?
如何在阿里云购买域名并搭建网站?
如何在宝塔面板创建新站点?
文字头像制作网站推荐软件,醒图能自动配文字吗?
*服务器网站为何频现安全漏洞?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法
如何快速搭建高效简练网站?
如何在阿里云ECS服务器部署织梦CMS网站?
北京企业网站设计制作公司,北京铁路集团官方网站?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
如何用已有域名快速搭建网站?
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
如何用低价快速搭建高质量网站?
网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?
详解jQuery中基本的动画方法
如何在阿里云服务器自主搭建网站?
如何用花生壳三步快速搭建专属网站?
如何在阿里云通过域名搭建网站?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
建站之星免费模板:自助建站系统与智能响应式一键生成
合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?
建站之星安装需要哪些步骤及注意事项?
制作网页的网站有哪些,电脑上怎么做网页?
Android自定义listview布局实现上拉加载下拉刷新功能
专业商城网站制作公司有哪些,pi商城官网是哪个?
网页设计与网站制作内容,怎样注册网站?
如何通过建站之星自助学习解决操作问题?
建站之星代理如何获取技术支持?
公司网站制作费用多少,为公司建立一个网站需要哪些费用?
*请认真填写需求信息,我们会在24小时内与您取得联系。