【发布时间】:2022-10-20 06:57:47
【问题描述】:
我正在尝试编写一个 CSV 文件,我可以有 1 到 n 列。目前我的数据是正确写入的,只是它们都写在同一列上。
我想要这样的东西:
名称|描述|生产商
名称 1|desc1|假
名称2|描述2|真
名称3|desc3|假
这是我的代码,开关的一小部分:
case "companies":
var respToolCompanies entrepriseTool.CompaniesResponse
if jsonErr := json.Unmarshal(resByt, &respToolCompanies); jsonErr != nil {
log.Fatalf("unmarshal: %s", jsonErr)
}
for _, mapping := range mappings {
writeHeader(csvwriter, mapping)
for _, company := range respToolCompanies.Companies {
writeDataAccordinglyToFieldType(mapping, company, csvwriter)
}
csvwriter.Flush()
}
writeDataAccordinglyToFieldType 函数:
func writeDataAccordinglyToFieldType(mapping ExportmappingsModel, entities interface{}, csvwriter *csv.Writer) {
switch mapping.SourceColType.String {
case "string":
field := extractFieldValue(entities, mapping)
writeFieldToBuffer(csvwriter, field.String())
case "number":
field := extractFieldValue(entities, mapping)
valInt := field.Int()
str := strconv.Itoa(int(valInt))
writeFieldToBuffer(csvwriter, str)
case "bool":
field := extractFieldValue(entities, mapping)
var boolVal string
if field.Bool() {
boolVal = "true"
} else {
boolVal = "false"
}
writeFieldToBuffer(csvwriter, boolVal)
}
}
我在哪里写数据:
func writeFieldToBuffer(csvwriter *csv.Writer, field string) {
err := csvwriter.Write([]string{field})
if err != nil {
log.Println("Unable to write a line inside the file")
}
}
【问题讨论】:
-
Neha的回答有帮助吗?如果没有,您会包含 JSON 的示例吗?另外,当你说你有“n列”时,这是什么意思?您是否提前知道需要将多少列写入 CSV?
mappingsvar 让我觉得您已经知道预期哪些列以及它们将是什么类型。