如何将TSV数据解析为嵌套对象

时间:2017-08-29 14:44:52

标签: univocity

我正在尝试将以下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();
}

1 个答案:

答案 0 :(得分:0)

您忘了在index上定义Metadata.title

public static class MetaData {
    @Parsed(index=1)
    private String title;
}

此外,当您的输入使用\t作为分隔符时,您将分隔符设置为|