我正在尝试将以下TSV数据解析为嵌套对象,但我的“title”字段在Nested类中始终为null。
我在底部包含了将TSV数据转换为对象的方法。
value1 | metaData1 | valueA |
value2 | metaData2 | valueB |
value3 | metaData3 | valueC |
public class Data {
@Parsed(index = 0)
private String value0;
@Parsed(index = 1)
private String foo;
@Nested
MetaData metaData;
public static class MetaData {
@Parsed(index = 1)
private String title;
}
}
public <T> List<T> convertFileToData(File file, Class<T> clazz, boolean removeHeader) {
BeanListProcessor<T> rowProcessor = new BeanListProcessor<>(clazz);
CsvParserSettings settings = new CsvParserSettings();
settings.getFormat().setDelimiter('|');
settings.setProcessor(rowProcessor);
settings.setHeaderExtractionEnabled(removeHeader);
CsvParser parser = new CsvParser(settings);
parser.parseAll(file);
return rowProcessor.getBeans();
}
答案 0 :(得分:0)
您忘了在index
上定义Metadata.title
:
public static class MetaData {
@Parsed(index=1)
private String title;
}
此外,当您的输入使用\t
作为分隔符时,您将分隔符设置为|
。