gpt4 book ai didi

java - OpenCSV memberFieldsToBindTo 不工作 - Java

转载 作者:行者123 更新时间:2023-12-02 02:18:45 26 4
gpt4 key购买 nike

我正在尝试使用 OpenCSV 将 CSV 文件解析为对象列表,以便我可以将学生数据加载到我的学生团队分配器系统中。

我一直在关注这个guide在“将记录解析为 Java 对象”标题下

在出现一些依赖项问题后,我让它输出 Student 对象列表,但是 CSV 列并未按应有的方式绑定(bind)到成员字段。打印测试为每个对象的字段返回空值。

我在 Student 中有两个构造函数,一个初始化 3 个字段,另一个为空。我知道目前空的被使用,因为删除这个会导致 Student 对象中的 InstantiationExceptions 。

CSVParser 类

public class CSVParser {

private static String CSV_FILE_PATH;

public CSVParser(String CSVPath){
CSV_FILE_PATH = CSVPath;

try (
Reader reader = Files.newBufferedReader(Paths.get(CSV_FILE_PATH));
) {
ColumnPositionMappingStrategy strategy = new ColumnPositionMappingStrategy();
strategy.setType(Student.class);
String[] memberFieldsToBindTo = {"fName", "sName", "stuNumber"};
strategy.setColumnMapping(memberFieldsToBindTo);

CsvToBean csvToBean = new CsvToBeanBuilder(reader)
.withMappingStrategy(strategy)
.withSkipLines(1)
.withIgnoreLeadingWhiteSpace(true)
.build();

List<Student> Students = csvToBean.parse();

for (Student s : Students) {
System.out.println("First Name : " + s.getFirstName());
System.out.println("Second Name : " + s.getSecondName());
System.out.println("StudentNo : " + s.getStudentNumber());
System.out.println("---------------------------");
}
} catch (IOException ex) {
Logger.getLogger(CSVParser.class.getName()).log(Level.SEVERE, null, ex);
}

}
}

学生类

public class Student {

private String fName;
private String sName;
private String stuNumber;
private String skill;
private final String[] skills = {"Planning","Writing","Developing"};

public Student(){

}

public Student(String fName, String sName, String stuNumber) {
this.fName = fName;
this.sName = sName;
this.stuNumber = stuNumber;
}

// Setters
public void setSkill(int skillIndex){
this.skill = skills[skillIndex];
}

public void setFirstName(String fName){
this.fName = fName;
}

public void setSecondName(String sName){
this.sName = sName;
}

public void setStudentNumber(String stuNumber){
this.stuNumber = stuNumber;
}

// Getters
public String getFirstName(){
return fName;
}

public String getSecondName(){
return sName;
}

public String getStudentNumber(){
return stuNumber;
}

// Save to Database
private void saveStudent(){
// DBConnect db = new DBConnect();

}
}

非空构造函数引发的异常

The exception caused by non empty constructor

打印测试在学生字段中显示空值

The print test showing null values in Student fields

请让我知道如何让事情变得更清楚,

谢谢。

最佳答案

列映射数组中的名称应响应 setter 的名称,而不是字段本身。如果找不到与该名称相对应的 setter,则无法设置该值。

关于java - OpenCSV memberFieldsToBindTo 不工作 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48867339/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com