Golang:使用jszwec/csvutil读取csv文件

jszwec/csvutil 高性能、惯用的CSV记录编码和解码到本机Go结构

文档

安装

bash 复制代码
go get github.com/jszwec/csvutil

要读取的文件 user.csv

复制代码
name,age,CreatedAt
jacek,26,2012-04-01T15:00:00Z
john,,2001-01-01T00:00:00Z

读取示例

go 复制代码
package main

import (
    "encoding/json"
    "fmt"
    "os"
    "time"

    "github.com/jszwec/csvutil"
)

type User struct {
    Name      string `csv:"name"`
    Age       int    `csv:"age,omitempty"`
    CreatedAt time.Time
}

func main() {
    body, _ := os.ReadFile("./user.csv")

    var users []User

    // read csv
    csvutil.Unmarshal(body, &users)

    // out
    data, _ := json.MarshalIndent(users, "", "  ")
    fmt.Println(string(data))
}

转为json输出

json 复制代码
[
  {
    "Name": "jacek",
    "Age": 26,
    "CreatedAt": "2012-04-01T15:00:00Z"
  },
  {
    "Name": "john",
    "Age": 0,
    "CreatedAt": "2001-01-01T00:00:00Z"
  }
]
相关推荐
大鸡腿同学8 分钟前
纳瓦尔宝典
后端
roman_日积跬步-终至千里1 小时前
【Go语言基础【14】】defer与异常处理(panic、recover)
golang
我很好我还能学1 小时前
【面试篇 9】c++生成可执行文件的四个步骤、悬挂指针、define和const区别、c++定义和声明、将引用作为返回值的好处、类的四个缺省函数
开发语言·c++
2302_809798322 小时前
【JavaWeb】Docker项目部署
java·运维·后端·青少年编程·docker·容器
蓝婷儿2 小时前
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
开发语言·python·学习
孔令飞2 小时前
Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践
ai·云原生·容器·golang·kubernetes
渣渣盟2 小时前
基于Scala实现Flink的三种基本时间窗口操作
开发语言·flink·scala
zhojiew2 小时前
关于akka官方quickstart示例程序(scala)的记录
后端·scala
sclibingqing2 小时前
SpringBoot项目接口集中测试方法及实现
java·spring boot·后端