我有一个充满数据的对象。 现在我想创建带有注释的类,该类允许我创建具有指定列顺序的 CSV 文件或任何通用解决方案。 我的数据表示有点复杂,这意味着它包含对象列表。
例如:
class User {
public String name;
public int age;
List<Relatives> relativeList;
public User() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public List<Relatives> getRelativeList() {
return relativeList;
}
public void setRelativeList(List<Relatives> relativeList) {
this.relativeList = relativeList;
}
}
class Relatives {
public int id;
public String name;
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setName(String name) {
this.name= name;
}
public String getName() {
return name;
}
}
我想用填充此类对象的数据创建 CSV 文件。
例如
User user = new User();
user.setName("Jackson");
user.setAge(32);
List<Relatives> relativeList = new ArrayList<Relatives>();
Relatives relatives = new Relatives();
relatives.setId(110);
relatives.setName("father");
relativeList.add(relatives);
relatives = new Relatives();
relatives.setId(111);
relativ.add(relatives);
relativeList.setName("mother");
user.setRelativeList(relativeList);
我想创建类似 CSV 文本。
"name";"age";"relatives id1";"relatives name1","relatives id2";"relatives name2"
"Jackson";"30";"110";"father";"111";"mother"
如示例所述,如果我在relativeList中有3个元素,则应添加一个名称为“relatives id3”和“relatives name3”的列。其中元素+子元素表示亲属+(id或名称)。 除此之外,我想决定生成的 CSV 中的列顺序,这意味着 age 可以作为第一列在 name.
可能很难找到准确的解决方案,但任何附近的解决方案都值得赞赏并且会有所帮助。
最佳答案
这是 List
对象内就是 killer 。 OpenCSV 有一个 BeanToCsv
类将对象列表转换为 CSV 文件,但我怀疑它是否适用于集合(但从未尝试过)。
如果您想限制一个人的亲属数量,您仍然可以使用它。然后,您创建一个具有原始数据字段的中间类,其构造函数采用 User
。类(class)。然后使用BeanToCsv
创建您想要的 csv 输出。
但是听起来您不想限制用户的亲属数量。所以你可以使用 openCSV 来推出你自己的。给定一个用户对象列表,您必须做四件事:
- 确定您的列表中该用户的最大亲属数量。
- 创建
String
带有标题值的数组,使用 #1 中的值来确定要放置多少个相对名称和 id 列。完成后创建一个List<String []>
并将数组放入列表中。 - 创建一个辅助类来转换
User
进入String
大批。传入 #1 中的值,因此如果您的亲戚数量少于最大值,您可以用空字符串或 null(您的选择)填充。使用此循环遍历用户对象列表,将每个用户转换为字符串数组,并将该数组添加到 #2 中创建的列表中。 - 使用 openCsv 中的 CSVWriter 调用
writeAll
方法传入您在步骤 2 和 3 中创建并填充的列表。
祝你好运:)
关于java - 如何从带注释的 java 类编写/生成 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32091232/