JSefa在单行CSV数据上使用CsvSubRecordList

时间:2014-09-05 12:28:37

标签: java csv

当我尝试解析子列表中的CSV记录时,我遇到了JSefa的问题。

给出以下CSV数据字符串(假设它们是第一行的标题行,此处未显示)

REC,data1,INF,data2,data3,LOL,data4,LOL,data5,LOL,data6

我尝试使用以下模型类将其反序列化到Record

@CsvDataType(defaultPrefix = "REC")
class Record {
   @CsvField(pos = 0)
   int data;

   @CsvSubRecordList(pos = 1, records = @Record(prefix = "INF"))
   List<Informative> informativeData;

   @CsvSubRecordList(pos = 2, records = @Record(prefix = "LOL"))
   List<LaughingOutLoud> funnyData;
}

@CsvDataType(defaultPrefix = "INF")
class Informative {
  @CsvField(pos = 0) 
  int data;

  @CsvField(pos = 1)
  int moreData;
}

@CsvDataType(defaultPrefix = "LOL)
class LaughingOutLoud {
   @CsvField(pos = 0)
   int data;
}

以及以下CsvConfiguration

csvConfiguration = new CsvConfiguration();
csvConfiguration.setFieldDelimiter(',');
int headerLine = 1;
boolean hasFooter = false;
boolean storeFailedLines = false;
csvConfiguration.setLineFilter(new HeaderAndFooterFilter(headerLine, hasFooter, storeFailedLines));

Record类已创建,data已正确填充,但两个List字段为null

但是,如果我尝试解析以下CSV字符串数据,请在子列表之间添加换行符

再次假设它们是第一行的标题行,此处未显示。 REC,data1\r\nINF,data2,data3\r\nLOL,data4\r\nLOL,data5\r\nLOL,data6

它将解析子记录并正确创建List

如何在不必在子记录之间放置换行符的情况下解析它?我没有在CsvConfiguration课程中看到任何可以纠正此问题的属性。

0 个答案:

没有答案