无法使用 OpenCSV 将 JavaBeans 写入 CSV
Can't write JavaBeans to CSV using OpenCSV
我正在尝试使用 OpenCSV 将一些数据写入 CSV 文件。但是,当我尝试存储数据时,我得到一个 CsvBeanIntrospectionException
后跟一个 NoSuchMethodException: Unknown property 'Email' on class 'class SubscriberBean'
。
这是我的 JavaBean 的代码 class:
import com.opencsv.bean.CsvBindByName;
import java.io.Serializable;
public class SubscriberBean implements Serializable {
@CsvBindByName
String Email;
@CsvBindByName
String Name;
public SubscriberBean() {}
public SubscriberBean(String email, String name) {
this.Email = email;
this.Name = name;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getEmail() {
return Email;
}
public void setEmail(String email) {
Email = email;
}
@Override
public String toString() {
return "SubscriberBean [" + "Email=" + Email + ", Name=" + Name + ']';
}
public Boolean isEmpty() {
return (this.Name.equals("") || this.Email.equals("") || this.Name == null || this.Email == null);
}
以及我如何尝试将数据存储在我的 csv 文件中的代码:
List<SubscriberBean> lsb = new ArrayList<SubscriberBean>();
.
.
.
try {
Writer writer = new FileWriter("test.csv");
StatefulBeanToCsv beanToCsv = new StatefulBeanToCsvBuilder(writer).build();
beanToCsv.write(lsb);
writer.close();
} catch (CsvDataTypeMismatchException e) {
e.printStackTrace();
} catch (CsvRequiredFieldEmptyException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
我检查了 JavaBean class,看起来不错。 CSV 代码与 opencsv 网站上提供的示例中的代码几乎相同。
快到了 ;)
apache beanutils 要求您的字段以小写字母开头。例如。 email
,不是Email
,等等。这是固定的SubscriberBean
:
public class SubscriberBean implements Serializable {
@CsvBindByName
String email;
@CsvBindByName
String name;
public SubscriberBean() {
}
public SubscriberBean(String email, String name) {
this.email = email;
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
// ...
}
请注意,由于小写字段,我不得不稍微更改设置器。我添加了 this
参考:this.email = email;
由于 getter 和 setter,我遇到了同样的异常。它们也应该被定义
我正在尝试使用 OpenCSV 将一些数据写入 CSV 文件。但是,当我尝试存储数据时,我得到一个 CsvBeanIntrospectionException
后跟一个 NoSuchMethodException: Unknown property 'Email' on class 'class SubscriberBean'
。
这是我的 JavaBean 的代码 class:
import com.opencsv.bean.CsvBindByName;
import java.io.Serializable;
public class SubscriberBean implements Serializable {
@CsvBindByName
String Email;
@CsvBindByName
String Name;
public SubscriberBean() {}
public SubscriberBean(String email, String name) {
this.Email = email;
this.Name = name;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getEmail() {
return Email;
}
public void setEmail(String email) {
Email = email;
}
@Override
public String toString() {
return "SubscriberBean [" + "Email=" + Email + ", Name=" + Name + ']';
}
public Boolean isEmpty() {
return (this.Name.equals("") || this.Email.equals("") || this.Name == null || this.Email == null);
}
以及我如何尝试将数据存储在我的 csv 文件中的代码:
List<SubscriberBean> lsb = new ArrayList<SubscriberBean>();
.
.
.
try {
Writer writer = new FileWriter("test.csv");
StatefulBeanToCsv beanToCsv = new StatefulBeanToCsvBuilder(writer).build();
beanToCsv.write(lsb);
writer.close();
} catch (CsvDataTypeMismatchException e) {
e.printStackTrace();
} catch (CsvRequiredFieldEmptyException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
我检查了 JavaBean class,看起来不错。 CSV 代码与 opencsv 网站上提供的示例中的代码几乎相同。
快到了 ;)
apache beanutils 要求您的字段以小写字母开头。例如。 email
,不是Email
,等等。这是固定的SubscriberBean
:
public class SubscriberBean implements Serializable {
@CsvBindByName
String email;
@CsvBindByName
String name;
public SubscriberBean() {
}
public SubscriberBean(String email, String name) {
this.email = email;
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
// ...
}
请注意,由于小写字段,我不得不稍微更改设置器。我添加了 this
参考:this.email = email;
由于 getter 和 setter,我遇到了同样的异常。它们也应该被定义