首页 > 解决方案 > 读取具有已知和未知列的 CSV 文件 java

问题描述

我想知道是否有办法读取具有已知和未知列的 csv 文件。

例如,第一个 csv 文件中的列是: id、firstname、lastname、city、country未知的列是 city 和 country

第二个 csv 文件是:

id, firstname, lastname, phone number unknwon 列是电话号码

我要解析的对象是:

public class Person {

    Long id;
    String firstname;
    String lastname;

    Map<String,String> additionalInfo;

}

AdditionalInfo 映射将包含“未知”列作为键,值将是该列中的行值。

有任何想法吗?

谢谢。

标签: javaspringcsvopencsv

解决方案


OpenCSV 允许您使用@CsvBindAndJoinByName注释执行与此类似的操作。取自文档

public class Demonstration {

   @CsvBindByName(column = "index")
   private String index;

   @CsvBindAndJoinByName(column = ".*", elementType = String.class)
   private MultiValuedMap<String, String> theRest;

   // Getters and setters go here
}

相同的文档提到了一个警告:如果你有多个,你必须小心不要有重叠的模式@CsvBindAndJoinByName,否则结果是不确定的。


推荐阅读