- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 openCSV 将 CSV 文件中的所有行转换为 java bean。文件中每行有 21 列,用管道符号 (|) 分隔。但是使用此代码得到空指针异常。csv 文件中的行还包括空单元格。我无法弄清楚错误在哪里。有人可以帮助我吗
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;
}
}
这是错误堆栈跟踪:
Exception in thread "main" java.lang.RuntimeException: Error parsing CSV! at com.opencsv.bean.CsvToBean.parse(CsvToBean.java:95) at com.opencsv.bean.CsvToBean.parse(CsvToBean.java:75) at com.alu.mdf.testsuite.sure.CSVExplorer.main(CSVExplorer.java:28) Caused by: java.lang.NullPointerException at com.opencsv.bean.CsvToBean.processLine(CsvToBean.java:123) at com.opencsv.bean.CsvToBean.processLine(CsvToBean.java:101) at com.opencsv.bean.CsvToBean.parse(CsvToBean.java:91) ...
最佳答案
我想你会遇到 uniVocity-parsers 的麻烦更少。它也比 OpenCSV 快得多。要使用它,首先注释您的 bean:
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 许可证)。
关于java - opencsv CsvToBean 的空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32522227/
我正在尝试使用 openCSV 将 CSV 文件中的所有行转换为 java bean。文件中每行有 21 列,用管道符号 (|) 分隔。但是使用此代码得到空指针异常。csv 文件中的行还包括空单元格。
我正在尝试在 Eclipse 中使用 OpenCSV 解析大型 CSV 文件。这是 CSV 文件的前 4 条记录。完整文件有 219,590 条记录:- 0,23,1,0,someone@email.
我正在使用opencsv包读取.csv文件。 我想多次阅读相同内容 .csv文件,无需重新打开文件,也无需重新创建Reader对象。 我正在使用 reset() Reader的方法对象在文件开头重置阅
使用 OpenCSV 解析 不带 BOM 的 UTF-8 文档会导致第一列无法读取。提供相同的文档内容作为输入,但以 UTF-8 BOM 编码可以正常工作。 我专门将字符集设置为 UTF-8
我是一名优秀的程序员,十分优秀!