问题:您可以使用 CsvMapper/CsvSchema 将 csv 转换为map<string, object>对象不是字符串的对象,例如布尔值或整数吗?
详细信息:我有一些 csv 文件,我想将它们直接转换为 json。我无权访问 POJO。但我确实有一个 xml 架构文件,其中包含 csv 数据中列的类型信息。
经过一些搜索后,我决定使用 Jackson 的 CsvMapper/CsvSchema 将 csv 文件转换为 json。我创建了一个包含列类型信息的 CsvSchema,然后将 csv 文件转换为 Map<> 文件,然后将映射文件转换为 json。除了一件事之外,一切都运行良好。所有 json 属性都是字符串,甚至 CsvSchema 定义为布尔和数字类型的属性也是如此。下面是一个小片段,显示了我正在做的事情。
String csvEmployeeData="\"Bob\",25,true\n" +
"\"Joe\",35,false\n" +
"\"Tom\",45,false\n";
CsvSchema schema = CsvSchema.builder().addColumn("name", ColumnType.String)
.addColumn("age", ColumnType.NUMBER)
.addColumn("isManager", ColumnType.BOOLEAN)
.build();
CsvMapper csvMapper = new CsvMapper();
MappingIterator<Map<String, ? extends Object>> it = csvMapper.readerFor(Map.class)
.with(schema)
.readValues(csvEmployeeData);
List<Map<String, ? extends Object>> objectList=it.readAll();
Map<String, ? extends Object> employeeObj=objectList.get(0);
assertEquals("java.lang.Integer", employeeObj.get("age").getClass().getTypeName());
// …Run Code Online (Sandbox Code Playgroud)