gpt4 book ai didi

java - 从 Map 转换为 POJO

转载 作者:行者123 更新时间:2023-11-30 05:34:26 24 4
gpt4 key购买 nike

我正在创建一个 CSV 加载器类,它从 CSV 文件中读取记录并返回 List<T>其中 T 是目标 POJO 类。

示例 CSV: test.csv

从 CSV 提取的记录中,可以得到0 Date 的值POJO 类的字段。从示例 CSV 中,记录 #2,其中 createdDate 的值是 0 。如何更改0在实际反序列化发生之前先到有效日期(例如 1970-01-01 09:00:00 )?

我已经成功创建了读取 CSV 文件并转换为返回 List<T> 的过程。 。

  1. 解析:org.apache.commons.csv
  2. 转换:com.fasterxml.jackson.databind.ObjectMapper我正在考虑覆盖我的 ObjectMapper 的一些功能操纵这些值,但我不知道该怎么做。
private List<T> convertToObjectList(List<Map<String, String>> csvRecordMapList, Class<T> targetClass) {
List<T> csvRecordObjList = new ArrayList<>();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setDateFormat(dateFormat);
objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
for(Map<String, String> recordMap : csvRecordMapList)
csvRecordObjList.add(objectMapper.convertValue(recordMap, targetClass));

return csvRecordObjList;
}

如果我有0对于Date目标 POJO 类的字段,我收到下面的错误消息(这是已经预料到的):

Can not construct instance of java.util.Date from String value '0': not a valid representation (error: Failed to parse Date value '0': Unparseable date: "0")

最佳答案

您可以尝试下面类似的操作。 (代码未编译)。

for(Map<String, String> recordMap : csvRecordMapList) {
if(recordMap.getKey().equals("createdDate") && recordMap.value().equals("0")) {
recordMap.put("createdDate", "1970-01-01 09:00:00");
}
csvRecordObjList.add(objectMapper.convertValue(recordMap, targetClass));
}

关于java - 从 Map<String, String> 转换为 POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56895585/

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