使用json.Marshal与os.WriteFile可快速写入小数据,json.Encoder适合大对象流式写入,结合MarshalIndent可格式化输出,map或slice同理处理。

在Golang中写入JSON文件是一个常见的操作,尤其是在处理配置、数据导出或API响应缓存时。Go语言通过encoding/json包提供了强大的JSON支持,结合os和io包可以轻松实现将数据写入JSON文件。以下是几种常用的写入方法汇总。
这是最简单直接的方式:先将Go结构体或map序列化为JSON字节流,再写入文件。
注意:Go 1.16后推荐使用os.WriteFile替代ioutil.WriteFile。
package main
import (
"encoding/json"
"os"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Email string `json:"email"`
}
func main() {
person := Person{
Name: "Alice",
Age: 30,
Email: "alice@example.com",
}
// 序列化为JSON
data, err := json.Marshal(person)
if err != nil {
panic(err)
}
// 写入文件,带格式缩进可使用 MarshalIndent
err = os.WriteFile("person.json", data, 0644)
if err != nil {
panic(err)
}
}
当你需要将大量数据或多个JSON对象写入同一个文件时,json.Encoder更高效,它可以直接写入io.Writer,无需先生成完整字节切片。
package main
import (
"encoding/json"
"os"
)
func main() {
file, err := os.Create("data.json")
if err != nil {
panic(err)
}
defer file.Close()
encoder := json.NewEncoder(file)
// 可选:美化输出
encoder.SetIndent("", " ")
data := map[string]interface{}{
"name": "Bob",
"age": 25,
}
err = encoder.Encode(data)
if err != nil {
panic(err)
}
}
如果你希望生成的JSON文件可读性更强,使用json.MarshalIndent代替json.Marshal。
无限画
千库网旗下AI绘画创作平台
574
查看详情
data, err := json.MarshalIndent(person, "", " ")
if err != nil {
panic(err)
}
err = os.WriteFile("pretty.json", data, 0644)
if err != nil {
panic(err)
}
第二个参数是前缀(通常为空),第三个是每个层级的缩进字符,如两个空格或\t。
无论是map[string]interface{}还是切片[]Person,写入方式一致。
people := []Person{
{Name: "Alice", Age: 30},
{Name: "Bob", Age: 25},
}
data, _ := json.MarshalIndent(people, "", " ")
os.WriteFile("people.json", data, 0644)
基本上就这些常用方法。选择哪种方式取决于你的场景:小数据用Marshal + WriteFile最方便;大数据或需流式处理时用json.Encoder更节省内存。同时记得处理错误,确保文件正确写入。
以上就是如何在Golang中写入JSON文件_Golang JSON文件写入方法汇总的详细内容,更多请关注其它相关文章!
# 动态网页
# 南京酒店网站建设
# 越秀品牌网站建设价格
# 长沙网站渠道推广招聘
# 安顺网站建设收费方式
# 济宁外贸网站维护推广
# 网站建设工艺有哪些内容
# 市南区360seo优化
# 无锡网站制作优化
# 新乡seo开发
# 姑苏区电子商务网站建设
# 如果你
# 文件压缩
# 加载
# 这是
# js
# 是一个
# 资源管理
# 如何实现
# 流式
# 如何在
# 格式化输出
# ai
# 字节
# 大数据
# go语言
# golang
# go
# json
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
《kimi智能助手》制作ppt教程
《随手记》备份数据方法
《下一站江湖2》独孤剑诀习得方法
excel怎么计算平均值 excel平均函数*ERAGE使用教学
iPhone17Pro如何连接蓝牙耳机_iPhone17Pro蓝牙设备配对与连接方法介绍
使用Selenium在无头Chrome中交互动态菜单和复选框的策略
mysql离线安装后如何启动_mysql离线安装完成后启动服务的方法
猫眼电影app如何设置电影上映提醒_猫眼电影上映提醒设置教程
windows10怎么更改下载路径_windows10默认存储位置修改教程
mysql怎么导入sql文件_mysql导入sql文件的方法与技巧
Win10如何关闭开机锁屏界面_Windows10跳过锁屏直接登录设置
江苏大剧院会员卡购买步骤
键盘声音异常怎么回事_键盘异响怎么处理
解决CSS布局中意外顶部空白问题的教程
vivo浏览器怎么离线保存网页 vivo浏览器下载完整页面以便无网络时阅读
Python对象引用与属性赋值:理解链表中的行为
win11如何诊断DirectX问题 Win11运行dxdiag工具排查显卡故障【排错】
荣耀 Magic10 Pro 系统更新提示失败_荣耀 Magic10 Pro 升级修复
如何查找哪个composer包引入了特定的依赖?
优化CSS动画与J*aScript定时器协同:构建稳定Toast提示
VS Code源代码管理(SCM)视图的进阶使用技巧
c++20的指定初始化(Designated Initializers)怎么用_c++ C风格结构体初始化
抖音商城官网是什么_抖音商城官方网址与访问方法
批改网官网首页登录 批改网学生用户登录入口
折叠屏手机充不进电是什么问题? 特殊结构带来的维修难点
iphone16系列配置参数介绍
使用 .htaccess 正确配置 WordPress 子目录重定向与路径保留
深入理解J*aScript异步操作:setTimeout与调用栈的真相
mysql中如何配置字符集和排序规则_mysql字符集排序配置
泰拉瑞亚网页版在线登录入口 泰拉瑞亚官方正版入口
《三角洲行动》战斗步枪与机枪类改装代码分享
泰拉瑞亚水晶无法放置问题
哔哩哔哩黑名单怎么查看
邮政快递寄件查询入口 邮政快递收件查询入口
c++中的const关键字用法大全_c++ const正确使用指南
word文档行距怎么调?word文档调行距的操作步骤
多闪电脑版下载_多闪PC端模拟器使用
Python类装饰器动态修改方法时的类型提示:Mypy插件实现精确静态分析
QQ阅读小说搜索入口地址_QQ阅读小说搜索入口地址搜索在线阅读
PyEZ 配置提交中 RpcTimeoutError 的健壮性处理策略
偃武诸葛亮阵容搭配推荐
知音漫客官网首页入口_知音漫客热门漫画推荐
OPPO手机参数配置如何开启护眼模式_OPPO手机参数配置护眼模式开启指南
申通快递物流信息查询 申通快递包裹状态追踪
不吃碳水化合物是健康减肥的好办法吗
C++ virtual析构函数作用_C++基类虚析构函数防止内存泄漏
《大学搜题酱》官网地址登录
LINUX怎么查看显卡信息_LINUX查看GPU状态
PHP utf8_encode 字符编码转换陷阱与解决方案
composer 提示 "requires ext-soap" 缺少 SOAP 扩展怎么办?
2025-11-17
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。