【发布时间】:2017-03-17 11:20:38
【问题描述】:
我正在使用opencsv 来创建一个CsvToBean,如下所示:
CsvToBean<AccountBean> csvToBean = new CsvToBeanBuilder<AccountBean>(new InputStreamReader(inputStream))
.withFieldAsNull(CSVReaderNullFieldIndicator.NEITHER)
.withType(AccountBean.class)
.build();
这是我的AccountBean:
public class AccountBean extends BeanBase<Account>
{
@CsvBindByName(column = "Id", required = true)
public String salesforceId;
@CsvBindByName(column = "OwnerId", required = true)
public String ownerId;
@CsvBindByName(column = "Name", required = true)
public String name;
// billing address
@CsvBindByName(column = "BillingStreet")
String billingStreet;
@CsvBindByName(column = "BillingCity")
String billingCity;
@CsvBindByName(column = "BillingState")
String billingState;
@CsvBindByName(column = "BillingPostalCode")
String billingPostcode;
@CsvBindByName(column = "BillingCountry")
String billingCountry;
}
问题在于地址字段 - 如果有一个空白字段,它们始终为空,无论我将哪个 CSVReaderNullFieldIndicator 值传递给 .withFieldAsNull()。
我的 csv 文件有双引号来表示一个空字段,因此使用 CSVReaderNullFieldIndicator.NEITHER(无论如何都是默认值)应该产生一个空字符串。
这会导致问题,因为我将空值保存到我的数据存储区,然后它会导致 NullPointerExceptions。
我做错了什么?
【问题讨论】: