【问题标题】:Opencsv validating CSV header with bean headersOpencsv 使用 bean 标头验证 CSV 标头
【发布时间】:2021-09-01 10:27:47
【问题描述】:

我有这样的课:

data class BeanClass (
        @CsvBindByName(column = "Id")
        val id: Long = -1,
)

并使用它来将其转换为 ID 列表

val recommendationUpdateList = CSVUtils.convertToBean(file, BeanClass::class.java)

CSVUtils.convertToBean 看起来像这样:

public static <T> List<T> convertToBean(File file, Class<T> bean) throws IOException {
        List<T> csvData = null;
        try (Reader reader = new FileReader(file)) {
            HeaderColumnNameMappingStrategy<T> strategy =
                    new HeaderColumnNameMappingStrategy<T>();
            strategy.setType(bean);
            CsvToBean<T> cb = new CsvToBeanBuilder<T>(reader)
                    .withType(bean)
                    .withFieldAsNull(CSVReaderNullFieldIndicator.BOTH)
                    .withMappingStrategy(strategy)
                    .build();
            csvData = cb.parse();
        }
        return csvData;
    }

现在当我上传这样的 CSV 时,它工作正常

Id
2

但是,我希望它在使用以下 CSV 时引发错误(注意 CSV 标头的名称已更改)

Kd
2

请建议一种方法,可以根据 bean 列标题验证 csv 的标题。它目前正在做的是选择默认值 -1,在我的用例中我也无法根据默认值进行验证

【问题讨论】:

    标签: java kotlin opencsv


    【解决方案1】:

    是否添加必需的工作:

    data class BeanClass (
        @CsvBindByName(column = "Id", required = true)
        val id: Long = -1
    )
    

    它会抛出 CsvRequiredFieldEmptyException

    【讨论】:

      猜你喜欢
      • 2016-06-06
      • 1970-01-01
      • 1970-01-01
      • 2019-03-13
      • 2021-09-11
      • 1970-01-01
      • 2019-03-25
      • 1970-01-01
      • 2013-01-30
      相关资源
      最近更新 更多