我的用例是编写一个通用的 CSV 转换器,它应该能够将任何 Java POJO 转换为 CSV 字符串。
我的实施:
public <T> List<String> convertToString(List<T> objectList) {
List<String> stringList = new ArrayList<>();
char delimiter = ',';
char quote = '"';
String lineSep = "\n";
CsvMapper mapper = new CsvMapper();
CsvSchema schema = mapper.schemaFor(!HOW_TO!);
for (T object : objectList) {
try {
String csv = mapper.writer(schema
.withColumnSeparator(delimiter)
.withQuoteChar(quote)
.withLineSeparator(lineSep)).writeValueAsString(object);
} catch (JsonProcessingException e) {
System.out.println(e);
}
}
return stringList;
}
我正在使用 Jackson-dataformat-csv 库,但我坚持使用!HOW_TO!部分,即如何从objectList中提取对象的.class。我正在学习并遇到类型擦除,所以我认为除了将 .class 作为我的函数的参数之外,这是不可能的。但我也使用 Java 反射从通用实体中提取此对象列表,因此我无法选择提供 .class 参数。
有解决方法吗?
或者
List<T> objectList to List<String> csvList
我可以转换具有添加分隔符、引号字符、行分隔符等功能的泛型的任何其他方法/库。
谢谢!