gpt4 book ai didi

go - []map[string]string 到 csv []byte 的惯用转换

转载 作者:IT王子 更新时间:2023-10-29 01:39:50 27 4
gpt4 key购买 nike

我有一个方法接受 io.Reader 以进行 http POST(如果需要我可以更改它)我将向此调用方法提交 x 行批处理。我将我的行存储为 map[string]string 以便于检查键是否正确。将一片 map[string]string 提交给当前接受 io.Reader 的调用方法的最简化方法是什么?

最佳答案

使用 encoding/csv包生成 CSV 编码。以下是如何编码为给定列名的 []byte:

func encodeCSV(columns []string, rows []map[string]string) ([]byte, error) {
var buf bytes.Buffer
w := csv.NewWriter(&buf)
if err := w.Write(columns); err != nil {
return nil, err
}
r := make([]string, len(columns))
for _, row := range rows {
for i, column := range columns {
r[i] = row[column]
}
if err := w.Write(r); err != nil {
return nil, err
}
}
if err := w.Flush(); err != nil {
return nil, err
}
return buf.Bytes(), nil
}

使用bytes.NewReader为帖子创建正文:

data, err := encodeCSV(coluns, rows)
if err != nil {
// handle error
}
req, err := http.NewRequest("POST", url, bytes.NewReader(data))

如果您可以控制数据格式,则考虑使用 JSON:

data, err := json.Marshal(rows)
if err != nil {
// handle error
}
req, err := http.NewRequest("POST", url, bytes.NewReader(data))

关于go - []map[string]string 到 csv []byte 的惯用转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25877965/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com