我需要写这样的对象
class User {
UUID id;
String name;
Role role;
}
class Role {
String name;
LocalDate activeFrom;
Authority owner;
}
class Authority {
String name;
}
棘手的想法是 csv 写入应该通过对象树递归地工作。还需要将 LocalDate 写为像 2019-11-05 fe 这样的字符串;
生成的 csv 文件应该是扁平的,如下所示:
user.id,user.name,user.role.name,user.role.activeFrom,user.role.owner.name
// 示例值
我已经尝试过 OpenCsv:
StatefulBeanToCsv<User> beanToCsv = new StatefulBeanToCsvBuilder<User>(printWriter).build();
try {
beanToCsv.write(users);
} catch (CsvDataTypeMismatchException | CsvRequiredFieldEmptyException e) {
e.printStackTrace();
}
printWriter.close();
和 Univocity 解析器:
CsvWriterSettings settings = new CsvWriterSettings();
ObjectRowWriterProcessor processor = new ObjectRowWriterProcessor();
settings.setRowWriterProcessor(processor);
processor.convertType(User.class, );
到目前为止没有运气。它们只能序列化为 csv 顶级对象。同样在 OpenCsv 中,我在序列化 LocalDate 时遇到了问题。你能帮助我吗?建议方法或图书馆?