Java 如何在超级csv中忽略未知列

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

我正在使用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 = 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请编辑您的问题,以便添加澄清,而不是作为评论发布。