全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

如何在Golang中写入JSON文件_保存结构体数据到文件

Go中保存结构体为JSON文件需用encoding/json.Marshal序列化并os.WriteFile写入,字段须大写导出,推荐用struct tag控制键名和omitempty等行为,支持MarshalIndent生成格式化JSON及直接序列化结构体切片。

在 Go 语言中,将结构体数据保存为 JSON 文件非常简单,核心是使用 encoding/json 包的 json.Marshal 序列化数据,再用 os.WriteFile(或 ioutil.WriteFile,已弃用)写入文件。

定义结构体并标记 JSON 字段名

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

若需人类可读的换行与缩进,用 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  # 序列化  # 再用  # 键名  # 首字母  # 字段名  # 出现在  # 保存为  # 需用  # 默认为  # 换行 


相关文章: 公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  建站10G流量真的够用吗?如何应对访问高峰?  已有域名能否直接搭建网站?  建站DNS解析失败?如何正确配置域名服务器?  建站之星导航菜单设置与功能模块配置全攻略  如何批量查询域名的建站时间记录?  定制建站模板如何实现SEO优化与智能系统配置?18字教程  大连网站制作公司哪家好一点,大连买房网站哪个好?  建站VPS选购需注意哪些关键参数?  北京营销型网站制作公司,可以用python做一个营销推广网站吗?  音响网站制作视频教程,隆霸音响官方网站?  C#如何序列化对象为XML XmlSerializer用法  如何在阿里云完成域名注册与建站?  如何配置WinSCP新建站点的密钥验证步骤?  javascript基本数据类型及类型检测常用方法小结  网站制作多少钱一个,建一个论坛网站大约需要多少钱?  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  安云自助建站系统如何快速提升SEO排名?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  如何在云服务器上快速搭建个人网站?  如何高效配置香港服务器实现快速建站?  如何快速建站并高效导出源代码?  网页设计与网站制作内容,怎样注册网站?  用v-html解决Vue.js渲染中html标签不被解析的问题  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  建站之星CMS五站合一模板配置与SEO优化指南  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  建站之星如何实现五合一智能建站与营销推广?  历史网站制作软件,华为如何找回被删除的网站?  头像制作网站在线制作软件,dw网页背景图像怎么设置?  建站之星后台管理如何实现高效配置?  为什么Go需要go mod文件_Go go mod文件作用说明  教学论文网站制作软件有哪些,写论文用什么软件 ?  如何快速生成ASP一键建站模板并优化安全性?  魔方云NAT建站如何实现端口转发?  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  如何选择建站程序?包含哪些必备功能与类型?  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】  长沙做网站要多少钱,长沙国安网络怎么样?  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  C++如何使用std::optional?(处理可选值)  江苏网站制作公司有哪些,江苏书法考级官方网站?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  模具网站制作流程,如何找模具客户?  整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?  如何用AWS免费套餐快速搭建高效网站?  如何在Golang中使用replace替换模块_指定本地或远程路径  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。