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"
  }
]
相关推荐
马猴烧酒.几秒前
【面试八股|计算机网络】计算机网络常见面试题详解笔记
java·开发语言·网络·笔记·计算机网络·算法·面试
2401_833197734 分钟前
现代C++多线程编程实战
开发语言·c++·算法
m0_587958955 分钟前
C++中的适配器模式实战
开发语言·c++·算法
西门吹雪分身7 分钟前
JMM java内存模型分析
java·开发语言
不会写DN12 分钟前
Js常用数组处理
开发语言·javascript·ecmascript
回到原点的码农12 分钟前
Spring Boot 热部署
java·spring boot·后端
还是大剑师兰特13 分钟前
数组中有两个数据,将其变成字符串
开发语言·javascript·vue.js
2301_7765087213 分钟前
C++中的职责链模式实战
开发语言·c++·算法
sqyno1sky15 分钟前
C++中的空对象模式
开发语言·c++·算法
星轨初途16 分钟前
C++ 类和对象(下):初始化列表、static 成员与编译器优化深度剖析
android·开发语言·c++·经验分享·笔记