OpenCSV CSV to JavaBean

前端 未结 2 922
一向
一向 2021-01-07 10:49

If I have a class with non-primitive public members and I want to populate them from a CSV file with OpenCSV, how can I do this? I notice that OpenCSV has some protected mem

2条回答
  •  生来不讨喜
    2021-01-07 11:26

    I'm sure you've long since moved on, but I've run into the same situation and there are two ways to handle it. You can either override CsvToBean.convertValue or CsvToBean.getPropertyEditor.

    The classier way is probably to override getPropertyEditor and return a custom PropertyEditor for your particular object. The quick and dirty way would be to override convertValue in anonymous class form, like this:

    CsvToBean csvToBean = new CsvToBean(){
    
        @Override
        protected Object convertValue(String value, PropertyDescriptor prop) throws InstantiationException,IllegalAccessException {
    
            if (prop.getName().equals("myWhatever")) {
                // return an custom object based on the incoming value
                return new MyWhatever((String)value);
            }
    
            return super.convertValue(value, prop);
        }
    };
    

    This is working fine for me with OpenCSV 2.3. Good luck!

提交回复
热议问题