0

0

将 JSON 数据转换为 CSV 格式:Go 语言实战教程

DDD

DDD

发布时间:2025-10-09 11:48:01

|

359人浏览过

|

来源于php中文网

原创

将 json 数据转换为 csv 格式:go 语言实战教程

本文档旨在指导开发者如何使用 Go 语言将 JSON 格式的数据转换为 CSV 格式。我们将详细介绍实现步骤,包括读取 JSON 文件、解析 JSON 数据、创建 CSV 文件以及将数据写入 CSV 文件。通过本文,你将能够掌握 JSON 到 CSV 转换的核心技巧,并避免常见的类型转换错误。

准备工作

在开始之前,确保你已经安装了 Go 语言环境,并且了解基本的 Go 语言语法。你需要导入以下几个标准库

  • encoding/json: 用于解析 JSON 数据。
  • encoding/csv: 用于写入 CSV 数据。
  • fmt: 用于格式化输出
  • io/ioutil: 用于读取文件内容。
  • os: 用于创建文件。
  • strconv: 用于类型转换。

实现步骤

  1. 定义 JSON 数据结构

首先,定义一个结构体来映射 JSON 数据的结构。这个结构体的字段名需要与 JSON 数据的键名相对应,并使用 json tag 来指定 JSON 键名。

type Json struct {
    RecordID int64  `json:"recordId"`
    DOJ      string `json:"Date of joining"`
    EmpID    string `json:"Employee ID"`
}
  1. 读取 JSON 文件

使用 ioutil.ReadFile 函数读取 JSON 文件的内容。

data, err := ioutil.ReadFile("./people.json")
if err != nil {
    fmt.Println(err)
    return
}
  1. 解析 JSON 数据

使用 json.Unmarshal 函数将 JSON 数据解析为 Go 语言中的数据结构。这里,我们将 JSON 数据解析为一个 Json 结构体的切片。

万兴爱画
万兴爱画

万兴爱画AI绘画生成工具

下载
var d []Json
err = json.Unmarshal([]byte(data), &d)
if err != nil {
    fmt.Println(err)
    return
}
  1. 创建 CSV 文件

使用 os.Create 函数创建一个 CSV 文件。

f, err := os.Create("./people.csv")
if err != nil {
    fmt.Println(err)
    return
}
defer f.Close()
  1. 写入 CSV 数据

使用 csv.NewWriter 函数创建一个 CSV 写入器,然后遍历解析后的 JSON 数据,并将数据写入 CSV 文件。

w := csv.NewWriter(f)
for _, obj := range d {
    var record []string
    record = append(record, strconv.FormatInt(obj.RecordID, 10))
    record = append(record, obj.DOJ)
    record = append(record, obj.EmpID)
    err := w.Write(record)
    if err != nil {
        fmt.Println(err)
        return
    }
}
w.Flush()

代码解释:

  • strconv.FormatInt(obj.RecordID, 10):将 int64 类型的 RecordID 转换为字符串类型。 这是解决原始代码中类型错误的关键步骤。csv.Writer.Write 函数期望接收 []string 类型的数据,因此需要将所有数据转换为字符串类型。
  • w.Flush():刷新缓冲区,确保所有数据都写入 CSV 文件。

完整代码示例

package main

import (
    "encoding/csv"
    "encoding/json"
    "fmt"
    "io/ioutil"
    "os"
    "strconv"
)

type Json struct {
    RecordID int64  `json:"recordId"`
    DOJ      string `json:"Date of joining"`
    EmpID    string `json:"Employee ID"`
}

func main() {
    // 读取 JSON 文件
    data, err := ioutil.ReadFile("./people.json")
    if err != nil {
        fmt.Println(err)
        return
    }

    // 解析 JSON 数据
    var d []Json
    err = json.Unmarshal([]byte(data), &d)
    if err != nil {
        fmt.Println(err)
        return
    }

    // 创建 CSV 文件
    f, err := os.Create("./people.csv")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer f.Close()

    // 写入 CSV 数据
    w := csv.NewWriter(f)
    defer w.Flush()

    for _, obj := range d {
        var record []string
        record = append(record, strconv.FormatInt(obj.RecordID, 10))
        record = append(record, obj.DOJ)
        record = append(record, obj.EmpID)
        err := w.Write(record)
        if err != nil {
            fmt.Println(err)
            return
        }
    }
}

注意事项

  • 错误处理: 在实际应用中,应该对所有可能出现的错误进行处理,例如文件读取错误、JSON 解析错误、CSV 写入错误等。
  • 数据类型转换: 确保将所有数据转换为字符串类型,因为 csv.Writer.Write 函数期望接收 []string 类型的数据。
  • 文件路径: 确保 JSON 文件存在,并且程序有权限访问该文件。同样,也要确保程序有权限在指定位置创建 CSV 文件。
  • CSV 头部: 如果需要,可以在写入数据之前,先写入 CSV 文件的头部。

总结

本文档详细介绍了如何使用 Go 语言将 JSON 数据转换为 CSV 格式。通过定义 JSON 数据结构、读取 JSON 文件、解析 JSON 数据、创建 CSV 文件以及将数据写入 CSV 文件,我们可以轻松地实现 JSON 到 CSV 的转换。记住,类型转换是关键,尤其是将数字类型转换为字符串类型。希望本文能够帮助你更好地理解和应用 Go 语言进行数据处理。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

420

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

536

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

311

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

77

2025.09.10

数据类型有哪几种
数据类型有哪几种

数据类型有整型、浮点型、字符型、字符串型、布尔型、数组、结构体和枚举等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

310

2023.10.31

php数据类型
php数据类型

本专题整合了php数据类型相关内容,阅读专题下面的文章了解更多详细内容。

222

2025.10.31

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

483

2023.08.02

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

320

2023.08.03

C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

14

2026.01.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 8.6万人学习

JS进阶与BootStrap学习
JS进阶与BootStrap学习

共39课时 | 3.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号