如何将CSV文件中的记录自动反序列化/解组到Go结构中的问题。
例如,我有
type Test struct {
Name string
Surname string
Age int
}
CSV文件包含记录
John;Smith;42
Piter;Abel;50
除了使用“encoding/csv”包阅读记录,然后执行类似以下操作之外,是否有一种简单的方法将这些记录解组为结构体
record, _ := reader.Read()
test := Test{record[0],record[1],atoi(record[2])}
5条答案
按热度按时间xienkqul1#
gocarina/gocsv可以像encoding/json一样处理自定义结构体。你也可以为特定类型编写自定义的marshaller和解组器。
示例:
7bsow1i62#
似乎我已经完成了CSV记录到结构体的自动封送(仅限于字符串和整型)。希望这会有用。
这里是一个链接到操场:http://play.golang.org/p/kwc32A5mJf
我将尝试创建github包是有人需要这个实现。
a8jjtwal3#
你可以自己烤一个。也许像这样:
vfhzx4xs4#
使用csvutil可以给予列标题,参见示例。
在您的情况下,这可能是:
bhmjp9jg5#
解决这个问题的一个简单方法是使用JSON作为中间表示。
一旦你做到了这一点,你有各种各样的工具在你的处置。
你可以…
map[string]interface{}
,然后进行任何必要的类型转换下面是一个简单的通用编组函数,它启用了这个流。。
以上与the standard csv library产生的
[]string
数据兼容。