如何在Golang中写入JSON文件_Golang JSON文件写入方法汇总


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

如何在golang中写入json文件_golang json文件写入方法汇总

在Golang中写入JSON文件是一个常见的操作,尤其是在处理配置、数据导出或API响应缓存时。Go语言通过encoding/json包提供了强大的JSON支持,结合os和io包可以轻松实现将数据写入JSON文件。以下是几种常用的写入方法汇总。

使用 json.Marshal 和 ioutil.WriteFile 写入

这是最简单直接的方式:先将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.Encoder 写入(适合大对象或流式写入)

当你需要将大量数据或多个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文件可读性更强,使用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 或 slice 的写入

无论是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

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.