Java 如何在超级csv中忽略未知列
我正在使用SuperCSV的BeanReader来读取我的csv文件。如果POJO和列匹配,则效果良好 例如,我的pojo有这些价值观Java 如何在超级csv中忽略未知列,java,csv,supercsv,Java,Csv,Supercsv,我正在使用SuperCSV的BeanReader来读取我的csv文件。如果POJO和列匹配,则效果良好 例如,我的pojo有这些价值观 //They have getters and setters. //just to make it simple I have used public. public myPojo { public columnA; public columnB; } 我的超级csv代码如下所示 final String[] header = beanR
//They have getters and setters.
//just to make it simple I have used public.
public myPojo
{
public columnA;
public columnB;
}
我的超级csv代码如下所示
final String[] header = beanReader.getHeader(true);
int amountOfColumns=beanReader.length();
CellProcessor[] processor = new CellProcessor[amountOfColumns];
因此,如果我的csv文件看起来像这样,它就可以正常工作
专栏A、专栏B
价值1,价值2
但是,如果我的csv文件有一个额外的列,它会因此异常而失败
检查相应的nameMapping元素是否与bean中的字段名匹配。我是否可以避免此异常而忽略此列。基本上它说它找不到相应的setter
未知列、列A、列B
someValue、value1、value2我使用了listReader而不是bean reader。把列值放到地图上,我就可以这样做了
protected MyPojo getBeanFromMap(MyPojo MyPojo, Class objClass,
Map<String, String> rowMap)
throws NoSuchFieldException, IllegalAccessException
{
Field[] fields = objClass.getFields();
for(Field f : fields){
String fieldName = f.getName();
String value = rowMap.get(fieldName);
MyPojo.setField(fieldName, value);
}
return MyPojo;
}
public void setField(String fieldName, Object value)
throws NoSuchFieldException, IllegalAccessException
{
Field field = getClass().getDeclaredField(fieldName);
field.set(this, value);
}
protectedmypojogetbeanfrommap(MyPojo-MyPojo,类objClass,
地图(行地图)
抛出NoSuchFieldException、IllegalAccessException
{
Field[]fields=objClass.getFields();
用于(字段f:字段){
字符串fieldName=f.getName();
字符串值=rowMap.get(字段名);
MyPojo.setField(字段名、值);
}
返回MyPojo;
}
public void setField(字符串字段名、对象值)
抛出NoSuchFieldException、IllegalAccessException
{
Field=getClass().getDeclaredField(fieldName);
字段.set(此字段,值);
}
什么是超级csv
?天哪,他们甚至有一个例子,但在这个例子中他们知道列名。@user1364861请编辑您的问题,以便添加澄清,而不是作为评论发布。