I have a problem when reading a CSV file using CSVHelper because it only returns the first row of the csv with the header.
I've used this code on reading the CSV file.
using (var reader = new StreamReader(filePath))
using (var csv = new CsvReader(reader))
{
csv.Configuration.RegisterClassMap<FundTransferMapSingle>();
var json = JsonConvert.SerializeObject(csv.GetRecords<FundTransferSingle>());
}
I've used some mapping for this
public class FundTransferMapSingle : ClassMap<FundTransferSingle>
{
public FundTransferMapSingle()
{
Map(m => m.senderRefId).Name("senderRefId");
Map(m => m.transRequestDate).Name("transRequestDate");
Map(m => m.particulars).Name("particulars");
Map(m => m.sender).ConvertUsing(row =>
{
var senderlist = new List<Sender>
{
new Sender { name = row.GetField("senderName"),
address = new List<Address>
{
new Address {line1 = row.GetField("senderAddrLine1"),
line2 = row.GetField("senderAddrLine2"),
city = row.GetField("senderAddrCity"),
province = row.GetField("senderProvince"),
zipCode = row.GetField("senderAddrZipcode"),
country = row.GetField("senderAddrCountry")}
}
}
};
return senderlist;
});
}
This is the CSV file that I'm reading
senderRefId,transRequestDate,particulars,senderName,senderAddrLine1
TRANSFER0001,2018-08-10T08:40:45.897,particulars,Name1,Address1
TRANSFER0002,2018-08-10T08:40:45.897,particulars,Name2,Address2
I get the result through my variable json
.
Try to load the data into a DataTable using CsvReader:
DataTable csvTable = new DataTable();
using (CsvReader csvReader = new CsvReader(new StreamReader(stream), true))
{
csvTable.Load(csvReader);
}
Then get the json from the DataTable:
using Newtonsoft.JSON;
public string DataTableToJSONWithJSONNet(DataTable table) {
string JSONString=string.Empty;
JSONString = JSONConvert.SerializeObject(table);
return JSONString;
}