如何从字符串属性自动映射到给定类型的对象?

问题描述

我想制作一个实用程序类,用于将 CSV 格式文件映射到给定类型的对象。是否有任何库可以将字符串值映射到整个对象?

我有这部分代码

public static List<?> mapCsvTolistofType(File file,Class<?> className) throws IOException {
        CSVParser parse = CSVParser.parse(file,StandardCharsets.US_ASCII,CSVFormat.DEFAULT);
        ObjectMapper mapper = new ObjectMapper();
        
        return parse.getRecords().stream()
                .map(x -> mapper.convertValue(x,className))
                .collect(Collectors.toList());
    }

当然这不起作用,因为 x 是 String 类型并且映射器不识别 Product.class 中的 String.class 字段;

CSVParser 返回包​​含来自 csv 的字符串的 CSVRecords。现在我想像这样映射它(示例):

mapCsvTolistofType(new File("products.csv"),Product.class);

CSVRecord 在打印时返回:

[CSVRecord [comment='null',recordNumber=1,values=[external_id,producer_part_number,name,eancode,vendor,final_price,price,list_price,currency]]

如何以通用的方式做到通用?我应该将 Apache Commons CSV 更改为其他内容吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)