2015-09-11 6 views
2

Я пытаюсь преобразовать все строки в CSV-файле в java-компонент, используя openCSV. Каждая строка имеет 21 столбец в моем файле, разделенных символом трубы (|). Но получая исключение нулевого указателя с этим code.rows в CSV-файл включает пустые ячейки also.I я не в состоянии понять, где это error.can любой один помочь мнеNull pointer excpetion with opencsv CsvToBean

package com.alu.mdf.testsuite.sure; 
import java.io.FileReader; 
import java.util.List; 
import com.opencsv.CSVParser; 
import com.opencsv.CSVReader; 
import com.opencsv.bean.ColumnPositionMappingStrategy; 
import com.opencsv.bean.CsvToBean; 

//import com.alu.mdf.test.common.Person; 

    public class CSVExplorer { 

     @SuppressWarnings({"rawtypes", "unchecked"}) 
     public static void main(String[] args) throws Exception 
     { 
      CsvToBean csv = new CsvToBean(); 

      String csvFilename = "TestCaseConfigurationFiles/application.csv"; 
      //CSVReader csvReader = new CSVReader; 
      CSVParser csvParser=new CSVParser('|'); 
      CSVReader reader = new CSVReader(new FileReader(csvFilename),1,csvParser); 



      //Set column mapping strategy 
      List list = csv.parse(setColumMapping(), reader); 

      for (Object object : list) { 
       SUREDataBean SUREDataBean = (SUREDataBean) object; 
       System.out.println(SUREDataBean); 
      } 
     } 

     @SuppressWarnings({"rawtypes", "unchecked"}) 
     private static ColumnPositionMappingStrategy setColumMapping() throws Exception 
     { 
      ColumnPositionMappingStrategy strategy = new ColumnPositionMappingStrategy(); 
      strategy.setType(SUREDataBean.class); 
      //strategy.createBean(); 
      String[] columns = new String[] {"InputDataStartIdentifier","EntityType","Operation","IncludeId","IdValue","AssociatedResource","SearchQueryForGETRequest/ParametersForPUTRequest","PayloadLocation","TestCaseName","Description","userName","password","InputDataEndIdentifier","ValidationDataStart","ExpectedStatusCode","VerficationParameters","Method","class","Prerequisites","Group","ValidationDataEnd"}; 
      System.out.println(columns.length); 
      strategy.setColumnMapping(columns); 
      return strategy; 
     } 

    } 

Вот стек ошибок трассировки:

Исключение в thread "main" java.lang.RuntimeException: Ошибка анализа CSV! на com.opencsv.bean.CsvToBean.parse (CsvToBean.java:95) на com.opencsv.bean.CsvToBean.parse (CsvToBean.java:75) на com.alu.mdf.testsuite.sure.CSVExplorer.main (CSVExplorer .java: 28) Вызвано: java.lang.NullPointerException в com.opencsv.bean.CsvToBean.processLine (CsvToBean.java:123) в com.opencsv.bean.CsvToBean.processLine (CsvToBean.java:101) at com. opencsv.bean.CsvToBean.parse (CsvToBean.java:91) ...

ответ

0

Я думаю, что вы будете иметь меньше проблем с uniVocity-parsers. Это также быстрее, чем OpenCSV. Для того, чтобы использовать его, первый аннотировать боб:

class SUREDataBean { 

    @NullString(nulls = { "?", "-" }) // if the value parsed in the quantity column is "?" or "-", it will be replaced by null. 
    @Parsed(defaultNullRead = "0") // if a value resolves to null, it will be converted to the String "0". 
    private Integer quantity; // The attribute name will be matched against the column header in the file automatically. 

    @Trim 
    @LowerCase 
    @Parsed 
    private String comments; 
    ... 

} 

Для разбора:

BeanListProcessor<SUREDataBean> rowProcessor = new BeanListProcessor<SUREDataBean>(SUREDataBean.class); 

CsvParserSettings parserSettings = new CsvParserSettings(); 
settings.getFormat().setDelimiter('|'); 
parserSettings.setRowProcessor(rowProcessor); 
parserSettings.setHeaderExtractionEnabled(true); 

CsvParser parser = new CsvParser(parserSettings); 

//Parsing is started here. 
//this submits all rows parsed from the input to the BeanListProcessor 
parser.parse(new FileReader(new File("/examples/bean_test.csv"))); 

List<SUREDataBean> beans = rowProcessor.getBeans(); 

Раскрытие информации: Я являюсь автором этой библиотеки. Это бесплатно и бесплатно (лицензия Apache V2.0).

 Смежные вопросы

  • Нет связанных вопросов^_^