Go中保存结构体为JSON文件需用encoding/json.Marshal序列化并os.WriteFile写入,字段须大写导出,推荐用struct tag控制键名和omitempty等行为,支持MarshalIndent生成格式化JSON及直接序列化结构体切片。
在 Go 语言中,将结构体数据保存为 JSON 文件非常简单,核心是使用 encoding/json 包的 json.Marshal 序列化数据,再用 os.WriteFile(或 ioutil.WriteFile,已弃用)写入文件。
Go 默认只导出首字母大写的字段,且 JSON 键名默认为字段名。推荐显式使用 struct tag 控制键名、忽略空值等:
例如:
type User struct {
ID int `json:"id"`
Name string `json:"name"`
Email string `json:"email,omitempty"` // 空字符串时不会出现在 JSON 中
IsActive bool `json:"is_active"`
}
使用 json.Marshal 转为字节切片
,再用 os.WriteFile 保存到磁盘:
json.Marshal 是否返回错误(如含不可序列化字段:func、channel、map[interface{}]string 等)0644)示例代码:
user := User{ID: 1, Name: "Alice", Email: "", IsActive: true}
data, err := json.Marshal(user)
if err != nil {
log.Fatal("JSON 编码失败:", err)
}
err = os.WriteFile("user.json", data, 0644)
if err != nil {
log.Fatal("写入文件失败:", err)
}
若需人类可读的换行与缩进,用 json.MarshalIndent 替代 Marshal:
data, err := json.MarshalIndent(user, "", " ") // 2个空格缩进
if err != nil {
log.Fatal(err)
}
os.WriteFile("user_pretty.json", data, 0644)
支持直接序列化 []User 类型,无需额外循环:
users := []User{
{ID: 1, Name: "Alice", IsActive: true},
{ID: 2, Name: "Bob", IsActive: false},
}
data, _ := json.MarshalIndent(users, "", " ")
os.WriteFile("users.json", data, 0644)
# js
# json
# go
# golang
# 编码
# 字节
# ai
# String
# 结构体
# 循环
# Struct
# Interface
# 切片
# map
# channel
# 序列化
# 再用
# 键名
# 首字母
# 字段名
# 出现在
# 保存为
# 需用
# 默认为
# 换行
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
php下载安装选zip还是msi格式_两种安装包对比【教程】
如何使用Golang指针与接口结合_实现方法调用和动态类型
mac怎么查看wifi密码_MAC查看已连接WiFi密码方法【技巧】
Win10怎么关闭自动更新错误弹窗_Win10策略屏蔽失败提示减少干扰【防护】
Win11如何设置系统声音_Win11系统声音调整教程【攻略】
Python 中将 ISO 8601 时间戳转换为日期并计算日期差值的完整教程
Win11蓝牙开关不见了怎么办_Win11蓝牙驱动丢失修复教程【方法】
php转exe用什么工具打包快_高效打包软件推荐【汇总】
Win11如何设置电源计划_Win11电源计划优化教程【攻略】
Python装饰器设计思路_功能增强机制说明【指导】
php8.4如何调用com组件_php8.4windows下com操作指南【教程】
mac怎么安装字体_MAC添加第三方字体与字体册管理【教程】
Win10怎样清理C盘Steam游戏缓存_Win10清理Steam游戏缓存步骤【步骤】
Win11笔记本怎么看电池健康度_Win11电池报告生成命令【详解】
Win11怎么硬盘分区 Win11新建磁盘分区详细教程【步骤】
Windows11如何设置专注助手_Windows11专注助手使用攻略【技巧】
Windows10如何更改盘符名称_Win10重命名硬盘分区卷标
c# 服务器GC和工作站GC的区别和设置
Python日志系统设计与实现_高可观测性架构实战
php中常量能用::访问吗_类常量与作用域操作符使用场景【汇总】
Mac的访达(Finder)怎么用_Mac文件管理入门教程【详解】
Python性能剖析高级教程_cProfileLineProfiler优化案例解析
如何在Golang中指定模块版本_使用go.mod控制版本号
如何正确访问 Laravel 模型或对象的属性而非调用不存在的方法
Win11怎么关闭粘滞键_彻底禁用Windows 11连按Shift粘滞键【步骤】
Drupal 中 HTML 链接被双重转义导致渲染异常的解决方案
为什么本地php环境运行php脚本卡顿_php执行效率优化方法与设置【说明】
PowerShell怎么创建复杂的XML结构
Win10任务栏天气和资讯怎么关闭 Win10禁用新闻和兴趣功能【教程】
全球各国上班时间表外贸邮件时间
Python安全爬虫设计_IP代理池与验证码识别策略解析
Windows如何使用BitLocker To Go加密U盘?(移动驱动器加密)
如何使用Golang开发基础文件下载功能_Golang HTTP文件响应与缓存实现
Mac如何与安卓手机传文件_Mac和Android设备互通【必备工具】
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
Drupal 中 HTML 链接被重复转义导致渲染异常的解决方案
如何诊断并终止卡死的 multiprocessing 子进程
php怎么下载安装后测试是否成功_简单脚本验证方法【操作】
Win11怎样安装网易云音乐_Win11安装网易云教程【步骤】
Windows系统时间服务错误_W32Time服务修复与同步教学
Windows11怎么自定义任务栏_Windows11任务栏自定义教程【步骤】
如何使用 Selenium 正确获取篮球参考网站球员名单元素列表
Mac怎么开启“任何来源”_Mac安装未签名应用的设置方法【解决】
如何使用Golang管理模块版本_Golanggo mod tidy与升级方法
C#如何使用XPathNavigator高效查询XML
Win11怎么设置右键刷新选项_Windows11显示更多选项技巧
Win11怎么更改任务栏位置_修改注册表将Win11任务栏置顶【教程】
Win11怎么设置开机密码_Windows11账户登录选项PIN码
如何提升Golang程序I/O性能_Golang I/O密集型程序优化示例
PythonWeb前后端整合项目教程_FastAPIReact完整实例
2026-01-01
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。