【发布时间】:2021-03-29 12:43:13
【问题描述】:
您好,我需要一些帮助,我有一个使用 gocsv 将其解析为结构的 csv 文件,我需要在该结构的各个切片上进行范围划分,并将每个切片的 DeductionCodes 与匹配的 EmployeeNumber 相结合,
这是 csv 结构。
type csvInput struct {
EmployeeNumber string `json:"employeeNumber" csv:"Employee #"`
DeductionCode string `json:"deductionCode" csv:"Deduction Code"`
Unit string `json:"unit" csv:"Unit"`
Amount string `json:"amount" csv:"Amount"`
}
这就是我想要做的,我需要将所有的 deductionCodes 加入到一个数组中,每个切片都有一个匹配的employeeNumber,
var payTypes []string
for _, csv := range csvData {
for _, c := range csvData {
if csv.EmployeeNumber == c.EmployeeNumber {
if csv.DeductionCode == c.DeductionCode {
payTypes = append(payTypes, c.DeductionCode)
jsonData, _ := json.Marshal(payTypes)
println(string(jsonData))
}
}
}
}
这是 csv 文件的示例,请注意,我从 csv 本身中丢弃了大部分字段
Employee #,Employee Name,Deduction Code,Description,HED,Unit,Ceridian Amount,New Calculation,Amount,Company Matched T / F,Calculated Worked Hours T/F
1362,USER 1,LINSTAXBEN 364,Life Insurance Taxable Benefit,364,$,18.31,16.90,16.90,,
1362,USER 1,AD&DTAXBEN 366,AD &D taxable benefit,366,$,0.19,0.18,0.18,,
1362,USER 1,PENS COMP 550,Company Pension (Non Union),550,%,5.00,130.52,5.00,T,T
1362,USER 1,FT DENTALF 641,Dental F FT,641,$,32.78,30.26,30.26,,
1362,USER 1,LTD 660,Long Term Disability,660,$,38.97,35.97,35.97,,
1362,USER 1,RRSP 720,RRSP,720,$,75.00,75.00,75.00,,
1362,USER 1,DON CLOC 761,CLOC Donations,761,$,2.00,2.00,2.00,,
1362,USER 1,SOC 770,Social Club,770,$,2.00,2.00,2.00,,
8113,USER 2,LINSTAXBEN 364,Life Insurance Taxable Benefit,364,$,11.58,10.69,10.69,,
8113,USER 2,AD&DTAXBEN 366,AD &D taxable benefit,366,$,0.12,0.11,0.11,,
8113,USER 2,MSPP PENSF 552,MSPP Pension FT,552,%,5.00,82.86,5.00,T,T
8113,USER 2,Union DUES 580,Union Dues,580,%,1.50,26.93,1.50,,T
8113,USER 2,FT DENTALF 641,Dental F FT,641,$,32.78,30.26,30.26,,
8113,USER 2,LTD 660,Long Term Disability,660,$,38.97,35.97,35.97,,
我知道运行上面的双倍范围距离正确还有很长的路要走,因为它只是从两个员工中附加每个 deductionCode,我需要将 ALL Employee Number 1362 解析为 1 个带有 deductioncode 数组的结构切片,然后全部员工编号 8113 放入不同的切片中,并将其扣除代码作为数组。
如果有人需要查看更多代码,请告诉我。并且很抱歉我对 golang 很陌生,我相信有更好的方法来完成我需要的。
【问题讨论】:
标签: go