1

我正在尝试将以下 TSV 数据解析为嵌套对象,但我的“标题”字段在嵌套类中始终为空。

我在底部包含了将 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();
}
4

1 回答 1

0

您忘记index在您的Metadata.title:

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

此外,您在\t输入|用作分隔符时将分隔符设置为。

于 2017-08-30T08:00:39.777 回答